Verificar a existência de problemas relacionados com a forma canónica no ASP.NET por programação

Traduções de Artigos Traduções de Artigos
Artigo: 887459 - Ver produtos para os quais este artigo se aplica.

Exclusão de responsabilidade

As informações fornecidas na base de dados de conhecimento da Microsoft (Microsoft Knowledge Base) são fornecidas "tal como estão", sem nenhum tipo de garantia. A Microsoft não oferece quaisquer garantias, expressas ou implícitas, incluindo as garantias de comercialização e adequação a um fim específico. Em nenhum caso serão a Microsoft Corporation ou os seus fornecedores responsáveis por quaisquer prejuízos, incluindo prejuízos directos, indirectos, incidentais, consequentes, prejuízos por perda de lucros negociais ou prejuízos extraordinários, ainda que a Microsoft ou os seus fornecedores tenham sido notificados da possibilidade de ocorrência de tais prejuízos. Alguns estados não permitem a exclusão ou limitação de responsabilidade por prejuízos incidentais ou consequentes. Consequentemente, a limitação acima referida pode não ser aplicável.
Expandir tudo | Reduzir tudo

Nesta página

INTRODUÇÃO

Este artigo descreve como adicionar salvaguardas a uma aplicação ASP.NET para ajudar a proteger contra problemas comuns de canonicidade.

Mais Informação

O que é a canonicidade?

A canonicidade é o processo que determina o modo como várias formas equivalentes de um nome são resolvidas para um só nome padrão. Este nome padrão único é também conhecido como nome canónico. Por exemplo, num computador específico, os nomes c:\dir\teste.dat, teste.dat e ..\..\teste.dat podem referenciar todos o mesmo ficheiro. A canonicidade é o processo que mapeia estes nomes para um nome semelhante a c:\dir\teste.dat.

Quando um URL é recebido por um servidor da Web, este mapeia o pedido para um caminho do sistema de ficheiros que determina a resposta. A rotina de colocação na forma canónica utilizada para mapear o pedido tem de analisar correctamente o URL, de forma a evitar servir ou processar conteúdo inesperado. Para obter mais informações sobre canonicidade, visite o seguinte Web site da Microsoft:
http://msdn2.microsoft.com/en-us/library/aa302420.aspx
Recomendamos a utilização dos procedimentos recomendados para ajudar a salvaguardar as aplicações. Para obter informações adicionais, consulte a secção seguinte.

Adicionar salvaguardas de canonicidade à aplicação Web

Os programadores do Microsoft ASP.NET podem adicionar verificações para ajudar a reduzir os problemas de canonicidade de uma aplicação Web adicionando um processador de eventos Application_BeginRequest ao ficheiro Global.asax, armazenado no directório raiz da aplicação Web. Este processador de eventos é executado para cada pedido Web. Pode adicionar código a este processador de eventos para ajudar a salvaguardar contra problemas de canonicidade.

Exemplo de código

Os exemplos de código que se seguem demonstram como adicionar um processador de eventos Application_BeginRequest a um ficheiro Global.asax. Este processador de eventos ajuda a prevenir a existência de caracteres inválidos e URLs incorrectamente formados através da execução de verificações de caminhos. Consequentemente, é possível evitar problemas de canonicidade comuns.

Exemplo de código de 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 de 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

Artigo: 887459 - Última revisão: 3 de dezembro de 2007 - Revisão: 2.6
A informação contida neste artigo aplica-se a:
  • 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
  • Microsoft ASP.NET 1.0
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