2011-09-30 16 views
16

Anche ricevendo un errore di convalida della richiesta quando si utilizza WIF. Mi viene inviato correttamente al servizio token di sicurezza, ma sulla via del ritorno ricevo questo errore di convalida.Un valore Request.Form potenzialmente pericoloso è stato rilevato dal client (wresult = "<trust: RequestSecuri ...")

Ho seguito tutte le istruzioni.

<httpRuntime requestValidationMode="2.0" /> 

controllare!

[ValidateInput(false)] 

controllare!

<pages validateRequest="false" > 

controllare!

Ho provato un validatore personalizzato, ma non viene mai istanziato.

errore di stack:

[HttpRequestValidationException (0x80004005): A potentially dangerous Request.Form value was detected from the client (wresult="trust:RequestSecuri...").] 
    System.Web.HttpRequest.ValidateString(String value, String collectionKey, RequestValidationSource requestCollection) +11396740 
    System.Web.HttpRequest.ValidateNameValueCollection(NameValueCollection nvc, RequestValidationSource requestCollection) +82 
    System.Web.HttpRequest.get_Form() +212 
    Microsoft.IdentityModel.Web.WSFederationAuthenticationModule.IsSignInResponse(HttpRequest request) +26 
    Microsoft.IdentityModel.Web.WSFederationAuthenticationModule.CanReadSignInResponse(HttpRequest request, Boolean onPage) +145 
    Microsoft.IdentityModel.Web.WSFederationAuthenticationModule.OnAuthenticateRequest(Object sender, EventArgs args) +108 
    System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +80 
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +270 

Qualche suggerimento?

+0

Un modo migliore è aggiungere un validatore specifico, come descritto in [questa risposta] (http: // stackoverflow.com/domande/5443563/potenzialmente pericolosa-richiesta-form-in-wsfederationauthenticationmodule-issigninre/5446288 # 5446288). –

+0

Un modo corretto di affrontare questo è descritto [qui] [1]. [1]: http://stackoverflow.com/questions/5443563/potentially-dangerous-request-form-in-wsfederationauthenticationmodule-issigninre/5446288#5446288 –

+0

@Eugenio Sì, è quello che ho detto. :-) –

risposta

26
<httpRuntime requestValidationMode="2.0"/> 

dopo questo componente aggiuntivo

<configuration> 
    <system.web> 
     <pages validateRequest="false" /> 
    </system.web> 
</configuration> 

anche in MVC3 v'è un attributo AllowHtml

[AllowHtml] 
public string Property{ get; set; } 

ecco alcuni link utili

ASP.NET MVC – pages validateRequest=false doesn’t work?

Why is ValidateInput(False) not working?

+0

Spiacente, modificato per notare che ho pagine validateRequest = false. –

+1

L'attributo AllowHtml ha funzionato per me quando si è presentato questo problema. – kolin

+0

Il tuo secondo link ha funzionato per me, grazie – Francisco

0

In MVC 3 (non sono sicuro di circa 2) è possibile aggiungere un filtro globale in global.asax.cs, ad es.

public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
{ 
    filters.Add(new ValidateInputAttribute(false)); 
} 

Che accoppiata con la seguente dovrebbe consentire a tutti i dati in e visualizzarli correttamente e sicuro penso:

<httpRuntime encoderType="Microsoft.Security.Application.AntiXssEncoder, AntiXssLibrary"/> 

nel web.config ed usando (nota due punti):

<%: Model.Something %> 

o in Rasoio:

@Model.Something 

e in alcuni casi in Javascript:

@Html.Raw(Ajax.JavaScriptStringEncode(Model.Something)) 
2

Vedi this answer se si esegue .NET 4.5, che si avvale di un validatore richiesta aggiornata costruito ad ASP.NET.

Problemi correlati