lunes, 3 de mayo de 2010

Validate input en Asp Mvc 2.0 y Asp.Net 4.0

Uno de los ataques a paginas de internet mas conocidos son los ataques XSS (Cross-site scripting) , que consiste en que el usuario inyecta condigo Html o Javascript en la pagina web. Para evitar esto el framework .Net 2.0 analiza los datos enviados en los requests, y si detecta algun codigo malicioso (como tags html), retorna un error al usuario y suspende el resto de la ejecución del request.


Ahora, existen casos en el que si queremos permitir que los usuarios envíen código que pueda parecer malicioso, como en un editor de texto enriquecido, o en en este blog, donde podemos escribir codigo javascript en los posts. 


Para evitar estas validaciones del Framework en Asp mvc, simplemente colocamos el atributo [ValidateInput(false)] en las acciones o controladores que no queramos que validen el texto recibido.


Sin embargo para el caso de Asp.Net 4.0, estas validaciones son realizadas a todos los requests (incluidos web services) antes de la funcion BeginRequest, esto significa que el framework rebota los requests con datos maliciosos antes de que se ejecuten los atributos de los controladores, dejando sin efecto el atributo mostrado previamente. 


Para solucionar esto se le debe indicar al framework que utilice las validaciones de la manera anterior,  colocando dentro del tag en el web.config lo siguiente:



 requestValidationMode="2.0" />



Esperemos que en el futuro exista alguna manera de poder especificar donde queremos usar esta nueva funcionalidad de seguridad y donde no, ya que con la solución actual estamos perdiendo por completo esta nueva funcionalidad.

No hay comentarios:

Publicar un comentario