Problemas de validação e representação da entrada são causados por metacaracteres, codificações alternativas e representações numéricas. Confiar na entrada resulta em problemas de segurança. Os problemas incluem: “Buffer Overflows”, ataques de “Cross-Site Scripting”, “SQL Injection”, entre outros.
HttpRequest
fornece acesso programático a variáveis das coleções QueryString
, Form
, Cookies
ou ServerVariables
sob a forma de um acesso de array (por exemplo, Request["myParam"]
). Quando há mais de uma variável com o mesmo nome, o .NET Framework retorna o valor da variável que aparece primeiro quando as coleções são pesquisadas, na ordem seguinte: QueryString
, Form
, Cookies
e depois ServerVariables
. Como QueryString
vem em primeiro lugar na ordem de pesquisa, é possível que parâmetros QueryString
substituam valores de formulários, cookies e variáveis de servidor. Da mesma forma, valores de formulário podem substituir variáveis nas coleções Cookies
e ServerVariables
, enquanto variáveis da coleção Cookies
podem substituir as de ServerVariables
.
...
String toAddress = Request["email"]; //Expects cookie value
Double balance = GetBalance(userID);
SendAccountBalance(toAddress, balance);
...
Example 1
seja executado durante uma visita a http://www.example.com/GetBalance.aspx
. Se um invasor puder fazer com que um usuário autenticado clique em um link que solicita http://www.example.com/GetBalance.aspx?email=evil%40evil.com
, um e-mail com o saldo da conta desse usuário será enviado para evil@evil.com
.HttpRequest
fornece acesso programático a variáveis das coleções QueryString
, Form
, Cookies
ou ServerVariables
sob a forma de um acesso de array (por exemplo, Request["myParam"]
). Quando há mais de uma variável com o mesmo nome, o .NET Framework retorna o valor da variável que aparece primeiro quando as coleções são pesquisadas, na ordem seguinte: QueryString
, Form
, Cookies
e depois ServerVariables
. Como QueryString
vem em primeiro lugar na ordem de pesquisa, é possível que parâmetros QueryString
substituam valores de formulários, cookies e variáveis de servidor. Da mesma forma, valores de formulário podem substituir variáveis nas coleções Cookies
e ServerVariables
, enquanto variáveis da coleção Cookies
podem substituir as de ServerVariables
.www.example.com
antes de apresentar o conteúdo.
...
if (Request["HTTP_REFERER"].StartsWith("http://www.example.com"))
ServeContent();
else
Response.Redirect("http://www.example.com/");
...
Example 1
seja executado durante uma visita a http://www.example.com/ProtectedImages.aspx
. Se um invasor realizar uma solicitação direta para a URL, o cabeçalho de referência adequado não será definido e a solicitação falhará. No entanto, se o invasor enviar um parâmetro HTTP_REFERER
artificial com o valor necessário, como http://www.example.com/ProtectedImages.aspx?HTTP_REFERER=http%3a%2f%2fwww.example.com
, a pesquisa retornará esse valor de QueryString
em vez de ServerVariables
, e a verificação será bem-sucedida.