Du er offline. Venter på, at der oprettes forbindelse til internettet igen

Kontroller programmerisk, om der er navnevedtagelsesproblemer med ASP.NET

INTRODUKTION
I denne artikel beskrives det, hvordan der kan føjes flere sikkerhedsforanstaltninger til et ASP.NET-program for bedre at beskytte mod almindelige navnevedtagelsesproblemer.
Yderligere Information

Hvad er navnevedtagelse?

Navnevedtagelse er den proces, hvor forskellige former for et navn kan fortolkes som et enkelt standardnavn. Det enkelte standardnavn kaldes også for det vedtagne navn. På en bestemt computer refererer navnene c:\dir\test.dat, test.dat og ..\..\test.dat f.eks. alle til den samme fil. Navnevedtagelse er den proces, hvor sådanne navne knyttes til et navn, der svarer til c:\dir\test.dat.

Når en URL-adresse modtages af en webserver, knytter serveren forespørgslen til en filsystemsti, der bestemmer svaret. Navnevedtagelsesrutinen, der bruges til at overføre forespørgslen, skal analysere URL-adressen korrekt for at undgå at levere eller behandle uventet indhold. Yderligere oplysninger om navnevedtagelse finder du på følgende Microsoft-websted: Vi anbefaler, at du bruger den bedste fremgangsmåde for at beskytte dine programmer. Yderligere oplysninger finder du i nedenstående afsnit.

Tilføje yderligere navnevedtagelsesbekyttelse til dine webprogrammer

Microsoft ASP.NET-udviklere kan tilføje flere undersøgelser og således reducere navnevedtagelsesproblemer for et webprogram ved at tilføje en Application_BeginRequest-hændelseshandler til filen Global.asax, som gemmes i webprogrammets rodmappe. Denne hændelseshandler udfører hver webforespørgsel. Du kan føje kode til denne hændelseshandler for at beskytte mod navnevedtagelsesproblemer.

Kodeeksempel

Følgende kodeeksempel viser, hvordan en Application_BeginRequest-hændelseshandler føjes til filen Global.asax. Hændelseshandleren beskytter mod ugyldige tegn og forkert udformede URL-adresser ved at udføre stigodkendelser. Derfor kan du undgå navnevedtagelsesproblemer.

Global.asax-kodeeksempel (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 IfEnd Sub</script>

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

Ansvarsfraskrivelse

De oplysninger, der findes i Microsoft Knowledge Base, gives "som de er og forefindes" uden garanti af nogen art. Desuden fraskriver Microsoft sig ethvert ansvar, både stiltiende og udtrykkeligt, herunder ansvar for salgbarhed eller egnethed til bestemte formål. Microsoft Corporation eller Microsofts leverandører er på ingen måde ansvarlige for skader af nogen art, herunder direkte, indirekte, hændelige skader eller følgeskader, driftstab eller særlige skader, selvom Microsoft Corporation eller Microsofts leverandører er blevet underrettet om muligheden for sådanne skader. I visse lande er det ikke tilladt at fraskrive sig eller begrænse ansvaret for følgeskader eller hændelige skader, hvorfor ovenstående begrænsning måske ikke gælder.
Egenskaber

Artikel-id: 887459 – Seneste udgave 12/03/2007 18:52:45 – Udgave 2.5

  • 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
  • kbsecurity kbtshoot KB887459
Feedback
var varCustomerTracking = 1; var Route = "76500"; var Ctrl = ""; document.write(" did=1&t=">=4050&did=1&t=">did=1&t=">html>