Teď jste offline a čekáte, až se znova připojí internet.

Programové zjišťování problémů souvisejících s kanonikalizací pomocí technologie ASP.NET

ÚVOD
Článek popisuje, jak rozšířit zabezpečení aplikace ASP.NET a předejít tak běžným problémům souvisejícím s kanonikalizací.
Další informace

Co je kanonikalizace?

Kanonikalizace je proces určující, jak jsou různé formy názvů překládány na jediný standardní název. Tento jediný standardní název je označován také jako kanonický název. U určitého počítače mohou například názvy c:\dir\test.dat, test.dat a ..\..\test.dat odkazovat na stejný soubor. Kanonikalizace je proces, který mapuje tyto názvy na název podobný názvu c:\dir\test.dat.

Když je adresa URL přijata webovým serverem, server mapuje požadavek na systémovou cestu souboru, která určí odpověď. Rutina kanonikalizace používaná k mapování požadavku musí adresu URL správně analyzovat, aby nedošlo k obsluze nebo zpracování neočekávaného obsahu. Další informace o kanonikalizaci naleznete na následujícím webu společnosti Microsoft: Je vhodné použít doporučené postupy, jelikož slouží k ochraně vašich aplikací. Další informace naleznete v následující sekci.

Rozšíření zabezpečení webových aplikací za účelem ochrany před problémy s kanonikalizací

Vývojáři aplikace ASP.NET mohou přidat více kontrolních mechanismů, které slouží k omezení problémů webových aplikací s kanonikalizací, a to přidáním procesu zpracování události Application_BeginRequest do souboru Global.asax uloženého v kořenovém adresáři webové aplikace. Tento proces zpracování události je spuštěn pro každý webový požadavek. K tomuto procesu zpracování události můžete přidat kód a chránit tak aplikaci před problémy s kanonikalizací.

Ukázka kódu

Na následujících ukázkách kódu je naznačen způsob přidání procesu zpracování události Application_BeginRequest do souboru Global.asax. Tento proces zpracování události ověřuje cestu a brání tak použití neplatných znaků a poškozených adres URL. Timto způsobem je možné se vyhnout běžným problémům s kanonikalizací.

Ukázka kódu souboru Global.asax (aplikace 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>

Ukázka kódu souboru Global.asax (jazyk 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>

Zřeknutí se záruky

Informace poskytované v databázi Microsoft Knowledge Base jsou poskytovány „tak, jak jsou“, bez jakýchkoli záruk. Neuznáváme žádné záruky, výslovně uvedené či mlčky předpokládané, včetně záruk vztahujících se k obchodovatelnosti a vhodnosti pro určitý účel. Společnost Microsoft ani její dodavatelé nejsou v žádném případě zodpovědni za žádné škody, včetně přímých, nepřímých, náhodných či následných škod, ztráty zisku či zvláštních škod, a to ani v případě, že společnost Microsoft a její dodavatelé byli na možnost takových škod upozorněni. V některých zemích není dovoleno vyloučit nebo omezit odpovědnost za následné nebo nepřímé škody. Proto se výše uvedené omezení na vás nemusí vztahovat.
Vlastnosti

ID článku: 887459 - Poslední kontrola: 12/03/2007 18:52:17 - Revize: 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
Váš názor