Upptäcka problem i processen för att skapa kanoniska namn i ASP.NET programmatiskt

Artikelöversättning Artikelöversättning
Artikel-id: 887459 - Visa produkter som artikeln gäller.

Ansvarsfriskrivning

Informationen i Microsoft Knowledge Base tillhandahålls "i befintligt skick" utan några som helst garantier. Vi lämnar inga garantier, vare sig uttryckliga eller underförstådda, inklusive garantier avseende produktens allmänna lämplighet och/eller lämplighet för ett särskilt ändamål. Microsoft Corporation eller dess leverantörer är under inga omständigheter skadeståndsskyldiga för några som helst skador, inklusive direkta, indirekta skador eller följdskador samt förlust av affärsvinster eller speciella skador, även om Microsoft Corporation eller dess leverantörer har underrättats om möjligheten av sådana skador. Vissa stater tillåter inte uteslutande eller begränsning av skadeståndsskyldighet för följdskador eller indirekta skador. Därför gäller kanske inte föregående begränsning.
Visa alla | Dölj alla

På den här sidan

INLEDNING

I den här artikeln beskrivs hur du ökar skyddet i ett ASP.NET-program för att undvika vanliga problem i processen för att skapa kanoniska namn.

Mer Information

Vad innebär processen för att skapa kanoniska namn?

I processen för att skapa kanoniska namn fastställs hur olika ekvivalenta former av ett namn ersätts av ett enda standardnamn. Detta enda standardnamn kallas också det kanoniska namnet. Ett exempel: På en dator refererar namnen c:\dir\test.dat, test.dat och ..\..\test.dat till samma fil. Genom processen för att skapa kanoniska namn mappas sådana namn till ett namn som liknar c:\dir\test.dat.

När en URL mottas av webbservern mappas en förfrågan till en filsystemsökväg som bestämmer svaret. När kanoniska namn skapas för att mappa denna förfrågan måste URL:en tolkas korrekt, så att inte fel innehåll behandlas. Mer information om processen för att skapa kanoniska namn finns på följande Microsoft-webbplats:
http://msdn2.microsoft.com/en-us/library/aa302420.aspx
Följ våra rekommendationer för att skydda dina program. Mer information finns i följande avsnitt.

Lägga till ytterligare kanoniseringsskydd i ditt webbprogram

Microsoft ASP.NET-utvecklare kan lägga till fler kontroller för att minska riskerna för kanoniseringsproblem i webbprogram genom att lägga till en Application_BeginRequest-händelsehanterare i filen Global.asax (i webbprogrammets rotkatalog). Denna händelsehanterare körs för varje webbfråga, och du kan lägga till kod som skydd mot problem vid skapande av kanoniska namn.

Kodexempel

Följande kodexempel visar du hur du lägger till en Application_BeginRequest-händelsehanterare i filen Global.asax. Händelsehanteraren bidrar till att förhindra ogiltiga tecken och URL-adresser med felaktiga format genom sökvägsverifieringar. På så vis kan du undvika vanliga problem vid skapande av kanoniska namn.

Global.asax-kodexempel (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>

Global.asax-kodexempel (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>

Egenskaper

Artikel-id: 887459 - Senaste granskning: den 3 december 2007 - Revision: 2.5
Informationen i denna artikel gäller:
  • 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
Nyckelord: 
kbsecurity kbtshoot KB887459

Ge feedback

 

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