2009-09-21 11 views
35

Recibo este error en mi aplicación ASP.NET MVC donde recibo entrada HTML de WYSIWYG, por lo que no quiero que se valide el contenido .Se detectó un valor Request.Form potencialmente peligroso desde el cliente - ASP.NET MVC

He intentado la solución que encontré here pero parece no hacer ninguna diferencia en mi aplicación MVC. También he intentado hacerlo en la web.config, pero de nuevo, sin alegría.
¿Es esto un error en ASP.NET MVC o algo así?

+1

Kelix, el puesto que se refieren a conlleva es la recomendación de usar el [web requestValidation = "false"] parámetro web.config o el atributo [@Page ValidateRequest = "False"] de la Vista. Cualquiera de estas opciones debería funcionar bien. –

+2

No, ver: http://stackoverflow.com/questions/486408/can-a-pages-validaterequest-setting-be-overridden – Ryall

Respuesta

48

En MVC usaría el atributo ValidateInput (falso).

Luego debe desinfectar sus entradas, p. con algo como this.

+4

también debe tener en la web. config – dtucker1914

+3

[AllowHtml] en la propiedad del modelo es incluso mejor si puede. – Todd

+0

La desactivación de la validación NO es la forma segura de hacerlo, especialmente si su aplicación se enfrenta a Internet pública. Considere el uso de un atributo '[AllowHtml]' más granular – jazzcat

21

Simplemente coloque este atributo: [ValidateInput (false)] en el método de acción en el controlador que maneja la publicación del formulario.

4

uso <httpRuntime requestValidationMode="2.0" /> en web.config

+0

http://www.asp.net/(S(ywiyuluxr3qb2dfva1z5lgeg))/learn/whitepapers/aspnet4/breaking-changes/# _ TOC7 –

+1

esto solo se aplica a .NET 4 –

25

En MVC 3 y más tarde, también se puede utilizar el atributo [AllowHtml]. Este atributo le permite ser más granular omitiendo la validación de una sola propiedad en su modelo.

http://blogs.msdn.com/b/marcinon/archive/2010/11/09/mvc3-granular-request-validation-update.aspx

+0

no funciona, aunque se supone que funciona. –

+0

Funcionó para mí, esto parece más seguro que '[ValidateInput (false)]', gracias – MIP1983

+0

Tuve que aplicar los atributos del modelo así como los atributos del modelo de vista correspondiente, luego funcionó. – spadelives

1

En su método de acción del controlador, (la que está trayendo este) añadir [ValidateInput (false)]

Ejemplo

[HttpPost] 
    [ValidateInput(false)] 
    public ActionResult Insert(FormCollection formCollection, Models.Page page) 
    { 
     //your code 
     return View(); 
    } 
Cuestiones relacionadas