Was bedeutet kanonische Darstellung bedeuten und deren mögliche Anfälligkeit für Websites
-
19-09-2019 - |
Frage
Ich suchte auf Google nach einem Sinn der kanonischen Darstellung und aufgedreht Dokumente, die völlig zu kryptisch sind. Kann mir jemand eine kurze Erklärung der kanonische Darstellung bieten und auch das, was in Websites kanonische Darstellung Angriffe einige typische Schwachstellen sind?
Lösung
Kanonisierung ist der Prozess, mit dem Sie einen Eingang nehmen, wie ein Dateiname oder eine Zeichenfolge, und sie in eine Standarddarstellung drehen.
Zum Beispiel, wenn Sie Ihre Web-Anwendung erlaubt nur den Zugriff auf Dateien unter C: \ Websites \ mydomain dann in der Regel jeder Eingabe auf Dateinamen mit Bezug wird canonicalised ein physischer, direkter Weg zu sein, eher als eine, die relativen Pfade verwendet. Wenn Sie öffnen C wollte: \ Websites \ mydomain \ example \ example.txt einen Eingang in diese Funktion kann zB \ example.txt sein. Es ist schwer zu arbeiten, wenn dies außerhalb der Grenzen Ihrer Website geht, so dass die Kanonisierung Funktion im Anwendungsverzeichnis aussehen würde und dass die relativen Pfad in einen physischen ändern, C: \ Websites \ mydomain \ example \ example.txt. Das ist natürlich leichter zu überprüfen, wie Sie einfach eine Zeichenfolge vergleichen auf dem Start des Dateipfades zu tun.
Für HTML-Eingänge nehmen Sie Eingaben wie% 20 und canonicalise sie durch unencoding, so würde dies in einen Raum verwandeln. Dies ist eine gute Idee, da die Anzahl der verschiedenen Arten der Codierung sind zahlreich, Kanonisierung bedeutet, würden Sie nur die decodierte Zeichenfolge überprüfen, anstatt versuchen, alle Codierung Variationen abzudecken.
Grundsätzlich Sie Eingabe einnehmen, die logisch äquivalent ist und in eine Standardform umzuwandeln, die Sie dann wirken kann, auf.
Andere Tipps
Die folgende Erklärung ist von der "Application Security and Development STIG" gefunden hier :
3.11 kanonische Darstellung Kanonische Darstellung Probleme auftreten wenn der Name einer Ressource verwendet wird, um Steuerressourcenzugriff. Es gibt mehrere Methoden zur Darstellung Ressourcennamen auf einem Computersystem. Eine Anwendung nur auf eine Berufung Ressourcenname zur Steuerung des Zugriffs kann fälschlicherweise eine Zugriffskontrolle machen Entscheidung, ob der Name in angegeben ein unbekanntes Format.
Zum Beispiel, in Windows kann notepad.exe sein durch die folgende Datei repräsentiert und Pfadnamen Kombinationen:
C: \ Windows \ System32 \ notepad.exe
% SystemRoot% \ System32 \ notepad.exe
\ \ C: \ Windows \ System32 \ notepad.exe
\ Host \ c $ \ Windows \ system32 \ notepad.exe
Eine Anwendung versucht, zu beschränken Zugriff auf die Datei ausschließlich auf der Basis Pfad und Dateinamen können nicht ordnungsgemäß gewähren oder den Zugriff verweigern. Das gleiche Problem kann auf andere benannte Ressourcen einzufrieren auf ein System, wie eine Hart- und Soft-Links, URL, Rohr, zu teilen, Verzeichnis, Gerätename, oder innerhalb von Daten Dateien, wenn alternative Codierung Mechanismen werden mit den Daten verwendet wird.
Folgende Artikel können Potential zeigen kanonische Darstellung Fragen in einem Anwendung:
• Zutrittskontrolle Entscheidungen basierend auf einem Ressourcennamen.
• Ausfall einen Ressourcennamen zu reduzieren seine kanonische Form vor dem Gebrauch.
Um kanonische zu minimieren Darstellung Probleme in der Anwendung implementieren die folgenden Verfahren:
• nicht allein auf Verlassen Sie sich Ressourcennamen Zugriff zu steuern.
• Wenn Ressourcennamen zu steuern, Zugang, validieren, die Namen, um sicherzustellen, sie sind im richtigen Format; ablehnen alle Namen Einpassen des known-good nicht Kriterien.
• Verwenden Sie Betriebssystem-basierten Zugriffssteuerungsmechanismen, wie beispielsweise Berechtigungen und ACLs.
Kanonisierung bedeutet, dass die Daten zu reduzieren, um seiner einfachsten Form erhalten, ist es für Input-Validierung verwendet wird.
Canonical (glaube ich) bedeutet, dass Konsole Eingang „typisches Verhalten“. Nicht-kanonische bedeutet, dass Eingang ist nicht-Standard und erfordert spezielle Kenntnisse, wie das Eingangsverhalten von „vi“ auf Linux.