lunes, 6 de febrero de 2012

ASP.NET MVC3 validateRequest

Al usar un editor html en ASP.NET MVC3 y hacer un POST he obtenido el siguiente error

A potentially dangerous Request.Form value was detected from the client (Descripcion="párrafo").


Description: Request Validation has detected a potentially dangerous client input value, and processing of the request has been aborted. This value may indicate an attempt to compromise the security of your application, such as a cross-site scripting attack. To allow pages to override application request validation settings, set the requestValidationMode attribute in the httpRuntime configuration section to requestValidationMode="2.0". Example: . After setting this value, you can then disable request validation by setting validateRequest="false" in the Page directive or in the configuration section. However, it is strongly recommended that your application explicitly check all inputs in this case.


Básicamente el error es debido a que en el post va código html y esto es interpretado como un problema de seguridad. Así que si estamos seguro de lo que estamos haciendo, podemos evitar la comprobación desactivando la validación en la acción de nuestra controladora. Hay que tener en cuenta que quitando la validación estaremos expuestos a que nuestros usuarios introduzcan código javascript en nuestro formulario con el riesgo de seguridad que eso implica, así que, hacer una limpieza de la cadena de caracteres antes de guardarla en la base de datos puede ser altamente recomendable.

//
// POST: /edit/
[HttpPost]
[ValidateInput(false)]
public ActionResult edit(Model model) {
  // ...
}

Eso es todo, happy coding !

Más info | ASP.NET MVC3jHtmlArea

No hay comentarios:

Publicar un comentario