2009-07-22 9 views

Antwort

8

Canonicalization ist der Vorgang, bei dem Sie eine Eingabe, z. B. einen Dateinamen oder eine Zeichenfolge, in eine Standardrepräsentation umwandeln. Wenn Ihre Webanwendung nur den Zugriff auf Dateien unter C: \ websites \ mydomain zulässt, wird in der Regel jede Eingabe, die sich auf Dateinamen bezieht, als physischer direkter Pfad und nicht als einer, der relative Pfade verwendet, kanonisiert. Wenn Sie C: \ websites \ meinedomain \ example \ beispiel.txt öffnen wollten, könnte eine Eingabe in diese Funktion example \ example.txt sein. Es ist schwierig herauszufinden, ob dies über die Grenzen Ihrer Website hinausgeht, also würde die Kanonisierungsfunktion das Anwendungsverzeichnis betrachten und diesen relativen Pfad in einen physischen Pfad ändern, C: \ websites \ meinedomain \ beispiel \ beispiel.txt. Dies ist offensichtlich einfacher zu überprüfen, da Sie einfach einen Stringvergleich am Anfang des Dateipfads durchführen.

Für HTML-Eingaben nehmen Sie Eingaben wie% 20 und kanalisieren sie durch Encodierung, so dass dies zu einem Leerzeichen werden würde. Dies ist eine gute Idee, da die Anzahl der verschiedenen Arten der Codierung zahlreich ist. Kanonisierung bedeutet, dass Sie nur die decodierte Zeichenkette überprüfen, anstatt zu versuchen, alle Codierungsvariationen abzudecken.

Im Grunde nehmen Sie Eingaben, die logisch äquivalent sind, und konvertieren sie in eine Standardform, auf die Sie dann reagieren können.

+0

so möglicherweise in einem Eingabefeld konnte ich versuchen, eine SQL-Injektion Angriff oder mögliche XSS zu normalen String Bereinigung zu umgehen? – predhme

+1

Sanitation ist anders. Im Allgemeinen wird eine SQL-Injection-Attacke keine Codierung verwenden, daher handelt es sich nicht um ein Problem der Kanonisierung. XSS kann sein, es hängt davon ab, was Sie tun. Wenn Sie alle Eingaben vor der Ausgabe codieren, dann nicht, das ist es nicht. Wenn Sie jedoch versuchen, bestimmte Teile einer Zeichenkette in die weiße Liste aufzunehmen oder eine schlechtere schwarze Liste zu erstellen, kanalisieren Sie die Zeichenkette zuerst, weil beispielsweise

-4

Canonical (glaube ich) bedeutet, dass Konsoleneingabe "typisches Verhalten" ist. Nicht-kanonisch bedeutet, dass Eingabe nicht standardisiert ist und spezielle Kenntnisse erfordert, wie das Eingabeverhalten von "vi" unter Linux.

+0

Aber wie gilt das für Websites und verwundbar sein? – predhme

+0

Siehe Blowdarts Antwort für eine Definition von kanonischem –

+0

Meine Antwort steht überhaupt nicht in Konflikt mit Blowdarts Antwort, außer dass ich es in einem Satz erklären konnte. Für Programmierer ist Effizienz der Schlüssel. – djangofan

3

Die folgende Erklärung ist von „Application Sicherheit und Entwicklung STIG“ Ergab here:

3,11 Canonical Darstellung Canonical Darstellung Fragen entstehen, wenn der Name einer Ressource Steuerressourcenzugriff verwendet wird. Es gibt mehrere Methoden zur Darstellung von Ressourcennamen auf einem Computersystem. Eine Anwendung, die sich ausschließlich auf einen Ressourcenname zur Zugriffskontrolle stützt, kann fälschlicherweise eine Zugriffskontrolle Entscheidung treffen, wenn der Name in ein nicht erkanntes Format angegeben wird.

Zum Beispiel in Windows, notepad.exe durch die folgende Datei und Pfadnamen Kombinationen dargestellt werden kann:

C: \ Windows \ System32 \ notepad.exe

% SystemRoot% \ System32 \ notepad.exe

\ \ C: \ Windows \ System32 \ notepad.exe

\ Host \ c $ \ Windows \ system32 \ notepad.exe

Zugriff auf die Datei basierend ausschließlich auf dem Dateipfad und Namen möglicherweise nicht berechtigt Zugriff gewähren oder verweigern.Das gleiche Problem kann auf andere benannten Ressourcen auf ein System, wie einen Hard- und Soft-Links, URL, Rohr, zu teilen Verzeichnis, Gerätenamen oder innerhalb von Daten anwenden Dateien, wenn alternative Codierung Mechanismen sind verwendet mit den Daten.

Die folgende Elemente in einem Anwendung zeigen mögliche kanonische Darstellung Probleme können:

• Zutrittskontrolle Entscheidungen basierend auf einer Ressourcennamen.

• Fehler beim Reduzieren eines Ressourcennamens auf seine kanonische Form vor der Verwendung.

In Reihenfolge kanonische Darstellung Probleme in der Anwendung zu minimieren, führen Sie folgende Verfahren:

• Setzen Sie sich nicht ausschließlich auf Ressourcennamen verlassen Zugriff zu steuern.

• Wenn die Ressourcennamen zur Steuerung des Zugriffs verwenden, überprüfen Sie die Namen, um sicherzustellen, dass sie im richtigen Format sind; ablehnen alle Namen nicht die bekannten gut Kriterien.

• Verwenden Sie Betriebssystem-basierte Zugriffskontrollmechanismen wie Berechtigungen und ACLs.

0

Canonicalization bedeutet, dass die empfangenen Daten auf ihre einfachste Form reduziert werden. Sie werden für die Validierung von Eingaben verwendet.