Az ASP.NET szabványosítással kapcsolatos problémáinak ellenőrzése programból

Bevezető

Ez a cikk azt ismerteti, hogy miként adhat további védelmet az ASP.NET alkalmazásokhoz a gyakori szabványosítási problémákkal szembeni biztonság fokozása érdekében.

További információ

Mi a szabványosítás?

A szabványosítás az a folyamat, amely segítségével egy adott név különböző egyenértékű formái egyetlen szabványos névvé oldhatók fel. Az egységes szabványos név kanonikus névként is ismert. Így például egy adott számítógépen a c:\könyvtár\teszt.dat, a teszt.dat és a ..\..\teszt.dat név ugyanarra a fájlra hivatkozhat. A szabványosítás az a folyamat, amelynek során az ehhez hasonló nevek a c:\könyvtár\teszt.dat névhez hasonló névre képeződnek le.

Az URL-címek webkiszolgálónak való átadásakor a kiszolgáló a kérelmet a fájlrendszer egy elérési útjára képezi le, ami meghatározza a választ. A kérelem leképezésére használatos szabványosítási rutinnak megfelelően kell elemeznie az URL-címet annak elkerülése érdekében, hogy nem várt tartalmat szolgáltasson vagy dolgozzon fel. A szabványosításról a Microsoft következő webhelyén talál további információt: Az alkalmazások védelmének biztosítása érdekében ajánlott követni a gyakorlati tanácsokat. A következő rész bővebb információval szolgál ezzel kapcsolatban.

A webalkalmazások bővítése további szabványosítási óvintézkedésekkel

A Microsoft ASP.NET-fejlesztők a webalkalmazás gyökérkönyvtárában tárolt Global.asax fájlba egy Application_BeginRequest eseménykezelőt felvéve további ellenőrzéseket adhatnak hozzá webalkalmazásaikhoz a szabványosítási problémák elkerülése érdekében. Ez az eseménykezelő minden webkérelem esetén lefut. Az eseménykezelőhöz kódot hozzáadva növelheti a számítógépek szabványosítási problémákkal szembeni védettségét.

Példakód

A következő példakódok az Application_BeginRequest eseménykezelő Global.asax fájlba való felvételének módját szemléltetik. Ez az eseménykezelő az érvénytelen karakterek és hibás formátumú URL-címek kiküszöbölését segíti elő az útvonalak ellenőrzésével. Ily módon elkerülhetők a leggyakoribb szabványosítási problémák.

Global.asax mintakód (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, "Nem található")
End If
End Sub
</script>

Global.asax mintakód ( 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, "nem található");
}
}
</script>

Felelősséget kizáró nyilatkozat

A Microsoft Tudásbázisban rendelkezésre bocsátott információk helyességére semmilyen garancia nem vonatkozik. A Microsoft elhárít mindennemű kifejezett vagy vélelmezett felelősséget, ideértve a forgalmazhatóságot és adott célra való alkalmasságot szavatoló garanciákat is. A Microsoft Corporation és szállítói semmilyen esetben sem vállalnak felelősséget az esetleges károkért – ideértve a közvetlen, közvetett, véletlen vagy járulékos károkat, valamint az üzleti haszon elmaradásából származó és a különleges károkat –, akkor sem, ha a Microsoft Corporationt vagy szállítóit tájékoztatták az ilyen károk bekövetkeztének a lehetőségéről. Egyes országokban nem engedélyezett a járulékos vagy véletlen károkért való felelősség kizárása vagy korlátozása, így ilyen esetben a fent leírt korlátozás nem érvényes.
Tulajdonságok

Cikkazonosító: 887459 - Utolsó ellenőrzés: 2008. júl. 14. - Verziószám: 1

Visszajelzés