Como testar programaticamente em busca de problemas de canonização com o ASP.NET

Traduções deste artigo Traduções deste artigo
ID do artigo: 887459 - Exibir os produtos aos quais esse artigo se aplica.

Declaração de isenção

As informações fornecidas na Base de Dados de Conhecimento da Microsoft são fornecidas "como estão" sem garantia de nenhum tipo. Nos isentamos de todas as garantias, sejam expressas ou implícitas, incluindo as garantias de comercialização e adequação para uma finalidade específica. Em nenhum momento a Microsoft Corporation ou seus fornecedores são responsáveis por quaisquer danos incluindo perda de lucros comerciais ou danos especiais diretos, indiretos, acidentais ou conseqüentes, mesmo se a Microsoft Corporation ou seus fornecedores forem avisados de tais danos. Alguns estados não permitem a exclusão ou limitação de responsabilidade por danos acidentais ou conseqüentes. Por isso, a limitação acima pode não se aplicar.
Expandir tudo | Recolher tudo

Neste artigo

INTRODUÇÃO

Este artigo descreve como adicionar proteção a um aplicativo ASP.NET para ajudar na proteção contra problemas comuns de canonização.

Mais Informações

O que é canonização?

Canonização é o processo que determina como diversas formas de nome equivalentes são resolvidas em um único nome padrão. O único nome padrão é também conhecido como o nome canônico. Por exemplo, em um determinado computador, os nomes c:\dir\teste.dat, teste.dat e ..\..\teste.dat podem todos referir ao mesmo arquivo. Canonização é o processo que mapeia tais nomes para um nome semelhante a c:\dir\teste.dat.

Quando um servidor da Web recebe um URL, ele mapeia a solicitação para um caminho de sistema de arquivo que determina a resposta. A rotina de canonização usada para mapear a solicitação deve analisar corretamente o URL para evitar o envio ou o processamento de conteúdo inesperado. Para obter mais informações sobre canonização, visite o seguinte site da Microsoft (site em inglês):
http://msdn2.microsoft.com/en-us/library/aa302420.aspx
Recomendamos que as melhores práticas sejam usadas para ajudar na proteção de seus aplicativos. Para obter informações adicionais, consulte a seguinte seção.

Adicionando proteções relacionadas à canonização ao seu aplicativo da Web

Desenvolvedores de Microsoft ASP.NET podem adicionar mais verificações para ajudar a reduzir problemas de canonização em um aplicativo da Web, adicionando o manipulador de evento Application_BeginRequest aos seus arquivos Global.asax armazenados no diretório raiz do aplicativo da Web. Esse manipulador de evento é executado para cada solicitação da Web. É possível adicionar um código a esse manipulador de evento para ajudar na proteção contra problemas de canonização.

Exemplo de código

O seguinte exemplo demonstra como adicionar um manipulador de evento Application_BeginRequest a um arquivo Global.asax. Esse manipulador de evento ajuda a impedir caracteres inválidos e URLs mal-formados, realizando verificações de caminho. Portanto, é possível impedir problemas de canonização comuns.

Exemplo de código do Global.asax(Visual Basic .NET)

<script language="vb" runat="server">
Sub Application_BeginRequest(Sender as Object, E as EventArgs)
    If (Request.Path.IndexOf(chr(92)) >= 0 OR _
        System.IO.Path.GetFullPath(Request.PhysicalPath) <> Request.PhysicalPath) then
        Throw New HttpException(404, "Not Found")
    End If
End Sub
</script>

Exemplo de código do Global.asax (C#)

<script language="C#" runat="server">
void Application_BeginRequest(object source, EventArgs e) {
    if (Request.Path.IndexOf('\\') >= 0 ||
        System.IO.Path.GetFullPath(Request.PhysicalPath) != Request.PhysicalPath) {
        throw new HttpException(404, "not found");
    }
}
</script>

Propriedades

ID do artigo: 887459 - Última revisão: segunda-feira, 3 de dezembro de 2007 - Revisão: 2.5
A informação contida neste artigo aplica-se a:
  • Microsoft ASP.NET 1.0
  • Microsoft ASP.NET 1.1
  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.0 Service Pack 1
  • Microsoft .NET Framework 1.0 Service Pack 2
  • Microsoft .NET Framework 1.0 Service Pack 3
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.1 Service Pack 1
Palavras-chave: 
kbsecurity kbtshoot KB887459

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com