Programmatische Überprüfung auf Kanonisierungsprobleme bei ASP.NET

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 887459 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
887459 How to programmatically test for canonicalization issues with ASP.NET

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.
Alles erweitern | Alles schließen

Auf dieser Seite

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:
http://msdn2.microsoft.com/en-us/library/aa302420.aspx
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 If
End 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>

Eigenschaften

Artikel-ID: 887459 - Geändert am: Montag, 3. Dezember 2007 - Version: 2.5
Die Informationen in diesem Artikel beziehen sich auf:
  • 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
Keywords: 
kbsecurity kbtshoot KB887459
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com