2011-09-30 13 views
16

También recibo un error de validación de solicitud cuando uso WIF. Me envían correctamente al STS, pero en el camino de regreso, obtengo este error de validación.Se detectó un valor Request.Form potencialmente peligroso desde el cliente (wresult = "<trust: RequestSecuri ...")

He seguido todas las instrucciones.

<httpRuntime requestValidationMode="2.0" /> 

check!

[ValidateInput(false)] 

check!

<pages validateRequest="false" > 

check!

Probé un validador personalizado, pero nunca se crea una instancia.

pila de errores:

[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 

¿Alguna sugerencia?

+0

Una forma mejor es agregar un validador específico, como se describe en [esta respuesta] (http: // stackoverflow.com/questions/5443563/potential-dangerous-request-form-in-wsfederationauthenticationmodule-issigninre/5446288 # 5446288). –

+0

Se describe una forma adecuada de tratar con esto [aquí] [1]. [1]: http://stackoverflow.com/questions/5443563/potentially-dangerous-request-form-in-wsfederationauthenticationmodule-issigninre/5446288#5446288 –

+0

@Eugenio Sí, eso es lo que dije. :-) –

Respuesta

26
<httpRuntime requestValidationMode="2.0"/> 

después de esto añadir

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

también en MVC3 hay un atributo AllowHtml

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

aquí están algunos enlaces útiles

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

Why is ValidateInput(False) not working?

+0

Disculpe, editado para tener en cuenta que tengo páginas validateRequest = false. –

+1

El atributo AllowHtml me funcionó cuando surgió este problema. – kolin

+0

Su segundo enlace funcionó para mí, gracias – Francisco

0

En MVC 3 (no estoy seguro acerca de 2) puede agregar un filtro global en global.asax.cs, p.

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

Eso, junto con la siguiente debería permitir que todos los datos y mostrarlo correctamente y con seguridad creo:

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

en web.config y el uso (nota de colon):

<%: Model.Something %> 

o en Razor:

@Model.Something 

y en algunos casos en Javascript:

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

Ver this answer si está ejecutando .NET 4.5 que se aprovecha de un validador de solicitud de actualización integrado en ASP.NET.

Cuestiones relacionadas