Programové testování problémů souvisejících s kanonikalizací pomocí technologie ASP.NET

ÚVOD

Tento článek popisuje, jak přidat do aplikace technologie ASP.NET k ochraně proti běžných problémů souvisejících s kanonikalizací ochranná opatření.

Další informace

Co je kanonikalizace?

Kanonikalizace je proces, který určuje, jak různé formy ekvivalentní název překladu na jediný standardní název. Tento jediný standardní název je označován také jako Kanonický název. Například na konkrétním počítači, názvy c:\dir\test.dat, test.dat a... \.. \test.dat může odkazovat na stejný soubor. Kanonikalizace je proces, který mapuje tyto názvy c:\dir\test.dat podobný název.

V případě, že webový server obdrží adresu URL, server mapuje požadavek cestu systému souborů, která určuje odpověď. Rutina kanonikalizace používaná k mapování požadavku musí správně analyzovat adresu URL, aby se zabránilo obsluhující nebo zpracování neočekávaného obsahu. Další informace o interpretaci naleznete na následujícím webu společnosti Microsoft:Doporučujeme použít doporučené postupy k ochraně vašich aplikací. Další informace naleznete v následující části.

Přidání kanonikalizací zabezpečení webové aplikace

Vývojáři aplikace ASP.NET mohou přidat více kontrolních k omezení problémů souvisejících s kanonikalizací pro webovou aplikaci přidáním obslužné rutiny události Application_BeginRequest do souboru Global.asax uloženého v kořenovém adresáři webové aplikace. Tato obslužná rutina události spustí pro každý webový požadavek. Můžete přidat kód pro tuto obslužnou rutinu události pro ochranu před problémy s kanonikalizací.

Ukázka kódu

Následující ukázky kódu ukazují, jak přidat obslužnou rutinu události Application_BeginRequest do souboru Global.asax. Tato obslužná rutina události zabraňuje neplatné znaky a poškozené adresy URL provedením ověření cesty. Proto se můžete vyhnout běžných problémů souvisejících s kanonikalizací.

Ukázka kódu souboru 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>

Ukázka kódu souboru 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>

Zřeknutí se práv

Informace poskytované znalostní báze Microsoft Knowledge Base jsou poskytovány tak, jak je"bez záruky jakéhokoli druhu. Můžeme se zříkají všech záruk, ať výslovných nebo předpokládaných, včetně záruk obchodovatelnosti a vhodnosti pro určitý účel. V žádném případě je společnost Microsoft ani její dodavatelé odpovědný za jakékoli škody včetně přímých, nepřímých, náhodných, následných škod, ztráty zisku či zvláštních škod, i když společnost Microsoft ani její dodavatelé byli na možnost vzniku takových škod. Některých zemích není dovoleno vyloučit nebo omezit odpovědnost za následné nebo nepřímé škody. Proto výše uvedené omezení nemusí vztahovat.
Vlastnosti

ID článku: 887459 - Poslední kontrola: 16. 1. 2017 - Revize: 2

Váš názor