validaterequest the potentially net from form detected dangerous asp asp.net asp.net-4.0 validate-request

asp.net - the - request validation c#



ValidateRequest="false" no funciona en Asp.Net 4 (5)

Esto funciona sin cambiar el modo de validación.

System.Web.Helpers.Validation.Unvalidated utilizar una ayuda System.Web.WebPages.dll de System.Web.WebPages.dll . UnvalidatedRequestValues un objeto UnvalidatedRequestValues que permite acceder al formulario y QueryString sin validación.

Por ejemplo,

var queryValue = Server.UrlDecode(Request.Unvalidated("MyQueryKey"));

Funciona para mí para MVC3 y .NET 4.

Tengo un formulario en el que uso ckeditor. Esta forma funcionó bien en Asp.Net 2.0 y 3.5 pero ahora no funciona en Asp.Net 4+. Tengo la directiva ValidateRequest = "false". ¿Alguna sugerencia?


Hay una forma de volver la validación a 2.0 para una página. Simplemente agregue el siguiente código a su web.config:

<configuration> <location path="XX/YY"> <system.web> <httpRuntime requestValidationMode="2.0" /> </system.web> </location> ... the rest of your configuration ... </configuration>


Sé que esta es una pregunta antigua, pero si encuentra este problema en MVC 3, puede decorar su ActionMethod con [ValidateInput(false)] ActionMethod [ValidateInput(false)] y simplemente desactivar la validación de solicitud para un único ActionMethod , que es útil. Y no necesita realizar ningún cambio en el archivo web.config , por lo que aún puede usar la validación de solicitud de .NET 4 en cualquier otro lugar.

p.ej

[ValidateInput(false)] public ActionMethod Edit(int id, string value) { // Do your own checking of value since it could contain XSS stuff! return View(); }


Solución encontrada en la página de error. Solo necesitaba agregar requestValidationMode = "2.0"

<system.web> <compilation debug="true" targetFramework="4.0" /> <httpRuntime requestValidationMode="2.0" /> </system.web>

Información de MSDN: Propiedad HttpRuntimeSection.RequestValidationMode


Tenga en cuenta que otro enfoque es mantener el comportamiento de validación 4.0, pero para definir su propia clase que deriva de RequestValidator y establecer:

<httpRuntime requestValidationType="YourNamespace.YourValidator" />

(donde YourNamespace.YourValidator está bien, debería poder adivinar ...)

De esta forma, mantendrá las ventajas del comportamiento de 4.0 (específicamente, que la validación se produzca antes en el proceso), al tiempo que permita las solicitudes que necesita dejar pasar.