Los problemas de validación y representación de entradas están causados por metacaracteres, codificaciones alternativas y representaciones numéricas. Los problemas de seguridad surgen de entradas en las que se confía. Estos problemas incluyen: «desbordamientos de búfer», ataques de «scripts de sitios», "SQL injection" y muchas otras acciones.
HttpRequest
proporciona acceso programático a las variables procedentes de las colecciones QueryString
, Form
, Cookies
o ServerVariables
en la forma de un acceso de matriz (p. ej. Request["myParam"]
). Cuando existe más de una variable con el mismo nombre, .NET Framework devuelve el valor de la variable que aparece primero cuando se buscan las colecciones en el siguiente orden: QueryString
, Form
, Cookies
y ServerVariables
. Como QueryString
está primero en el orden de búsqueda, los parámetros QueryString
pueden sustituir los valores de variables de servidor, cookies y formularios. Del mismo modo, los valores de formularios pueden reemplazar las variables de las colecciones Cookies
y ServerVariables
, y las variables de la colección Cookies
pueden reemplazar las de ServerVariables
.
...
String toAddress = Request["email"]; //Expects cookie value
Double balance = GetBalance(userID);
SendAccountBalance(toAddress, balance);
...
Example 1
se ejecuta al visitar http://www.example.com/GetBalance.aspx
. Si un atacante puede hacer que un usuario autenticado haga clic en un enlace que solicite http://www.example.com/GetBalance.aspx?email=evil%40evil.com
, se enviará un mensaje de correo electrónico con el balance de cuentas del usuario a evil@evil.com
.HttpRequest
proporciona acceso programático a las variables procedentes de las colecciones QueryString
, Form
, Cookies
o ServerVariables
en la forma de un acceso de matriz (p. ej. Request["myParam"]
). Cuando existe más de una variable con el mismo nombre, .NET Framework devuelve el valor de la variable que aparece primero cuando se buscan las colecciones en el siguiente orden: QueryString
, Form
, Cookies
y ServerVariables
. Como QueryString
está primero en el orden de búsqueda, los parámetros QueryString
pueden sustituir los valores de variables de servidor, cookies y formularios. Del mismo modo, los valores de formularios pueden reemplazar las variables de las colecciones Cookies
y ServerVariables
, y las variables de la colección Cookies
pueden reemplazar las de ServerVariables
.www.example.com
antes de proporcionar contenido.
...
if (Request["HTTP_REFERER"].StartsWith("http://www.example.com"))
ServeContent();
else
Response.Redirect("http://www.example.com/");
...
Example 1
se ejecuta al visitar http://www.example.com/ProtectedImages.aspx
. Si un atacante realiza una solicitud directa a la URL, no se establecerá el encabezado de referencia correspondiente y la solicitud no se cumplirá. No obstante, si el atacante envía un parámetro HTTP_REFERER
artificial con el valor requerido, como http://www.example.com/ProtectedImages.aspx?HTTP_REFERER=http%3a%2f%2fwww.example.com
, la búsqueda devolverá el valor de QueryString
en lugar de ServerVariables
y se realizará la comprobación.