Sie sind zurzeit offline. Es wird auf die erneute Herstellung einer Internetverbindung gewartet.

Programmatische Überprüfung auf Kanonisierungsprobleme bei ASP.NET

Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
887459 How to programmatically test for canonicalization issues with ASP.NET
Einführung
Dieser Artikel beschreibt, wie Sie durch Hinzufügen von Sicherheitsoptionen in einer ASP.NET-Anwendung häufig auftretende Kanonisierungsprobleme verhindern können.
Weitere Informationen

Was bedeutet Kanonisierung?

Unter Kanonisierung versteht man den Prozess, durch den mehrere gleichwertige Formen eines Namens in einen einzigen Standardnamen, einen so genannten kanonischen Namen, aufgelöst werden können. Beispielsweise können auf einem bestimmten Computer die Namen "c:\dir\test.dat", "test.dat" und "..\..\test.dat" alle auf dieselbe Datei verweisen. Unter Kanonisierung versteht man den Prozess, bei dem diese Namen einem Namen wie beispielsweise "c:\dir\test.dat" zugeordnet werden.

Wenn ein Webserver einen URL empfängt, ordnet der Server die Anforderung einem Dateisystempfad zu, der die Antwort bestimmt. Die für die Zuordnung der Anforderung verwendete Kanonisierungsroutine muss den URL korrekt auflösen, um die Verarbeitung unerwünschter Inhalte zu vermeiden. Weitere Informationen zur Kanonisierung finden Sie auf folgender Website von Microsoft: Es wird empfohlen, zum Schutz Ihrer Anwendungen bewährte Verfahren einzusetzen. Weitere Informationen finden Sie im folgenden Abschnitt.

Hinzufügen zusätzlicher Kanonisierungs-Sicherheitsoptionen in Ihrer Webanwendung

Microsoft ASP.NET-Entwickler können zusätzliche Prüfungen hinzufügen, um das Auftreten von Kanonisierungsproblemen bei einer Webanwendung zu reduzieren. Hierzu muss ein Application_BeginRequest-Ereignishandler in die Datei "Global.asax" eingefügt werden, die sich im Stammverzeichnis der Webanwendung befindet. Dieser Ereignishandler wird für jede Webanwendung ausgeführt. Sie können Code zu diesem Ereignishandler hinzufügen, mit dem Kanonisierungsprobleme verhindert werden können.

Beispielcode

Die folgenden Code-Beispiele zeigen, wie ein Application_BeginRequest-Ereignishandler zur Datei "Global.asax" hinzugefügt werden kann. Dieser Ereignishandler führt Pfadprüfungen durch, um ungültige Zeichen und fehlerhaft formatierte URLs zu verhindern. Auf diese Weise können allgemeine Kanonisierungsprobleme verhindert werden.

Beispielcode für "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 IfEnd Sub</script>

Beispielcode für "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>

Erklärung

Die Informationen in der Microsoft Knowledge Base werden wie besehen und ohne Gewährleistung jeglicher Art zur Verfügung gestellt. Microsoft bietet keine ausdrückliche oder implizite Gewähr auf Richtigkeit, Vollständigkeit, Handelsüblichkeit und/oder Eignung für einen bestimmten Zweck. Die Microsoft Corporation oder deren Lieferanten können nicht für Schäden haftbar gemacht werden, die aus der Verwendung dieser Informationen entstehen, ungeachtet dessen, ob es sich um direkte, indirekte, zufällige Schäden, Folgeschäden, Schäden durch entgangenen Gewinn oder spezielle Schäden handelt, selbst wenn die Microsoft Corporation auf die Möglichkeit solcher Schäden hingewiesen wurde. Da einige Länder den Ausschluss oder die Beschränkung der Haftung für zufällige oder direkte Folgeschäden nicht zulassen, gilt die obige Beschränkung in diesen Ländern möglicherweise nicht.
Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.
Eigenschaften

Artikelnummer: 887459 – Letzte Überarbeitung: 12/03/2007 18:52:19 – Revision: 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