EQNTDC[.net]: Validate Request
Supongo que os estaréis preguntando qué es eso de "EQNTDC" que aparece en el título de post (y sobre todo ese formato tan…friki?). Este es el acrónico que acuñará una nueva sección que nos gustaría inaugurar. El susodicho acrónimo significa:
Errores Que Nos Traen De Cabeza
En esta nueva sección abordaremos temas de todo tipo con el fin de solucionar esos problemas tontos, pero que son un gran obstáculo cuando intentamos hace una cosa.
En este primer post de la colección nos gustaría empezar con un fallo que empieza a darse en programadores de .net (de ahí el formato del título de post. Bueno, eso y los arrays asociativos
) acostumbrados a las anteriores versiones del framework.
Para aquellos que no tengan ni idea de .net, y para que puedan seguir el post, el framework de Microsoft se encarga de controlar de forma nativa (y que además viene activado por defecto) las inyecciones Cross Site Scripting (XSS). Esta opción la controla el framework con el parámetro "Validate Request". Para que veáis un ejemplo, si yo introduzco una posible inyección XSS en un webform (formulario de .net) la ejecución se detiene y se nos muestra un error:

El error que nos muestra .net:
La idea es genial y está muy bien, ¿pero que pasa cuando queremos guardar etiqueta de html?. Pues muy fácil, que .net saltará con esa misma excepción.
Existe una forma de limitar y decirle que deshabilite el filtrado para un determinado webform (y encargarnos de filtrarlo manualmente). En la directiva de la página incluíamos el parámetro: ValidateRequest="false". De ésta forma .net no aplicaba el filtrado para ese formulario.
El problema viene con .net 4.0. En la última versión del framework esto no funciona de esta manera. No se puede desactivar este comportamiento de forma tan sencilla. Si estamos acostumbrados a desarrollar en versiones anteriores y queremos conservar este formato solamente tendremos que incluir en el fichero de configuración del sitio, Web.config, la siguiente línea:
<httpRuntime requestValidationMode="2.0"/>
Con esta estaremos habilitando el modelo utilizado en versiones previas.
Aún no hay trackbacks.

30 mayo, 2010 - 22:25
Keep posting stuff like this i really like it