Scripting en ASP.net

Con el correr del tiempo, y a medida que vamos aprendiendo más sobre las distintas tecnologías solemos perder el foco sobre los conocimientos adquiridos por nosotros, aquello que nos resulta simple y básico en contra partida de aquellas personas que recién se suben a este tren.

De esta forma solemos olvidarnos de que el mundillo del desarrollo tiene tantos vericuetos que nos dedicamos a promover la tecnología siempre parados en el último peldaño y esperando que todos entiendan del tema. Así es como ayer me consultaban sobre algunos mensajes de errores que un sitio realizado con ASP.net mostraba en base a los parámetros que se enviaban desde una caja de texto hacia el servidor.

El mensaje en cuestión suele ser muy parecido al de la imagen.

Todas las versiones de ASP.net, así como todas las versiones del Framework .Net, incluidas las más recientes, proveen un mecanismo de validación de la información enviada por el usuario desde la página ASP.net hacia el servidor. Esta validación pretende impedir técnicas comunes de Scripting, donde el atacante suele escribir líneas de código de script que luego son escritas en la página Web para que el navegador las ejecute. Siendo que el navegador no puede discernir entre que código es malicioso y cual no, simplemente ejecuta todo lo que encuentra en la página Web (Claro, existen algunas validaciones de seguridad que realiza el navegador, pero este no es el caso). Por lo tanto, al detectar cualquier envío de datos que pudieran contener este tipo de ataques, ASP.net emite un error avisando del problema. Por supuesto, si vemos la imagen anterior nos daremos cuenta que el mensaje rompe la ejecución normal de nuestro sitio Web impidiendo al usuario que pueda seguir navegando en el mismo, además, es probable que necesitemos que el usuario ingrese libremente este tipo de código o, también puede que ASP.net emita el error aunque los valores enviados no sea necesariamente maliciosos.

Sea cual fuere el caso podemos desactivar esta validación a nivel de página mediante el siguiente atributo:

ValidateRequest=”false”

Esto hará que ASP.net no valide las entradas por parte del usuario dejando que las validaciones las hagamos nosotros. Esto último es vital a tener en cuenta ya que el hecho de que no se realice dicha validación no hace que el problema desaparezca, simplemente pasa de ser responsabilidad de ASP.net a ser nuestra responsabilidad.

Este atributo es declarado en el Tag principal de la página ASP.net.

<%@ Page Language=”C#” ValidateRequest=”true” … %>



Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s