sexta-feira, 21 de novembro de 2008

Ataques de injeção no ASP.NET - Parte II

Para proteger seu aplicativo ASP.NET contra ataques de injeção, execute as seguintes etapas:

Etapa 1. Usar a validação de solicitação do ASP.NET

Por padrão, a validação de solicitação das versões 1.1 e 2.0 do ASP.NET detecta qualquer elemento HTML e caracteres reservados em dados postados no servidor. Isso ajuda a evitar que usuários insiram scripts em seu aplicativo. A validação de solicitação verifica todos os dados de entrada em relação a uma lista embutida em código de valores potencialmente perigosos. Se houver uma correspondência, ela emitirá uma exceção do tipo HttpRequestValidationException.

É possível desabilitar a validação de solicitação no arquivo de configuração do aplicativo, Web.config, adicionando um elemento com validateRequest="false" ou em uma página individual, configurando ValidateRequest="false" no elemento @ Pages.
Se for necessário desabilitar a validação de solicitação, desabilite-a apenas na página afetada. Um exemplo disso é quando você tem uma página com um campo de texto de formato livre que aceita entradas formatadas em HTML.

Confirme se a validação de solicitação do ASP.NET está habilitada no Machine.config
Por padrão, a validação de solicitação é habilitada pelo ASP.NET. É possível ver a seguinte configuração padrão no arquivo Machine.config.comments.
Confirme se a validação de solicitação não foi desabilitada, substituindo as configurações padrão no arquivo Machine.config do servidor ou no arquivo Web.config do aplicativo.

Teste a validação de solicitação do ASP.NET

É possível testar os efeitos da validação de solicitação. Para isso, crie uma página do ASP.NET que desabilite a validação de solicitação, configurando ValidateRequest="false" da seguinte maneira.<%@ Language="C#" ValidateRequest="false" %>

(%@ Page ValidateRequest="false" language="c#" Debug="true" Codebehind="cadvideos.pas" AutoEventWireup="false" Inherits="cadvideos.Tcadvideos" %)


Quando você executa a página, "Hello" é exibido em uma caixa de mensagem porque o script em txtString é transmitido e processado como um script do lado do cliente no navegador.

Se você configurar ValidateRequest="true" ou remover o atributo da página ValidateRequest, a validação de solicitação do ASP.NET rejeitará a entrada do script e produzirá um erro.

Até o Próximo.

Nenhum comentário: