Warum eine Whitelist für die HTML-Bereinigung verwenden?

8

Ich habe mich oft gefragt, warum eine Whitelist im Gegensatz zu einer Blacklist verwendet wird, wenn HTML-Eingaben bereinigt werden?

Wie viele schlaue HTML-Tricks gibt es, um XSS-Sicherheitslücken zu öffnen? Offensichtlich sind Script-Tags und -Frames nicht erlaubt, und eine Whitelist würde für die Felder in HTML-Elementen verwendet werden, aber warum verbieten sie das meiste von allem?

    
Carson Myers 19.03.2010, 08:09
quelle

7 Antworten

22

Wenn Sie etwas von einer Whitelist lassen, dann brechen Sie einfach etwas, das nicht wichtig genug war, um darüber nachzudenken.

Wenn Sie etwas von einer schwarzen Liste entfernen, haben Sie eine große Sicherheitslücke geöffnet.

Wenn Browser neue Funktionen hinzufügen, wird Ihre Blacklist veraltet.

    
Quentin 19.03.2010, 08:14
quelle
5

Lesen Sie etwas darüber gestern. Es ist in der Bedienungsanleitung von Feedparser .

Ein Ausschnitt:

  

Je mehr ich nachforsche, desto mehr Fälle   Ich finde wo Internet Explorer für   Windows wird scheinbar harmlos behandeln   als Code markieren und munter ausführen   es. Deshalb Universal Feed Parser   verwendet eine Whitelist und keine Blacklist.   Ich bin einigermaßen zuversichtlich, dass keiner von   die Elemente oder Attribute auf der   Whitelist sind Sicherheitsrisiken. Ich bin nicht   überhaupt sicher über Elemente oder   Attribute, die ich nicht explizit habe   untersucht. Und ich habe kein Vertrauen   überhaupt in meiner Fähigkeit, Saiten zu erkennen   innerhalb von Attributwerten dieses Internet   Explorer für Windows wird als behandelt   ausführbarer Code Ich werde es nicht versuchen   bewahren "nur die guten Stile". Alle   Stile werden entfernt.

Es besteht ein ernsthaftes Risiko, wenn Sie nur einige Elemente auf die schwarze Liste setzen und eine wichtige vergessen. Wenn Sie einige Tags, von denen Sie wissen, dass sie sicher sind, auf die weiße Liste setzen, ist das Risiko geringer, wenn Sie etwas zulassen, das missbraucht werden kann.

    
Ikke 19.03.2010 08:12
quelle
4

Auch wenn Script-Tags und Frame-Tags nicht zulässig sind, können Sie trotzdem jedes Tag wie dieses platzieren

%Vor%

und viele Browser funktionieren.

    
YOU 19.03.2010 08:26
quelle
3

Weil Sie dann sicher sind, dass Sie nichts verpassen . Wenn Sie einige Tags explizit zulassen, haben Sie offensichtlich mehr Kontrolle darüber, was erlaubt ist.

Whitelists werden in den meisten sicherheitsrelevanten Themen verwendet. Denken Sie an Firewalls. Die erste Regel besteht darin, jeglichen (eingehenden) Verkehr zu blockieren und dann nur offene Ports zu öffnen, die eigentlich geöffnet sein sollen. Dies macht es viel sicherer.

    
Felix Kling 19.03.2010 08:15
quelle
2

Weil andere Tags das Layout einer Seite beschädigen können. Stellen Sie sich vor, was passieren würde, wenn jemand <style> tag injiziert. <object> tag ist auch gefährlich.

    
Pavel Nikolov 19.03.2010 08:13
quelle
0

Ich bevorzuge beides, ich nenne es die "Schwarze Liste mit entspannter weißer Liste" Ansatz:

  1. Erstellen Sie eine entspannte "White List" mit Tags & amp; Attribute.
  2. Erstellen Sie eine "Black List für die White List", alle Tags / Attribute in der Blacklist SOLLEN in der von Ihnen erstellten White List existieren oder sonst wird ein Fehler angezeigt.

Diese schwarze Liste fungiert als Ein-Aus-Schalter für Tags / Attribute in der entspannten weißen Liste.

Diese "Schwarze Liste mit entspannter weißer Liste" Ansatz macht es viel einfacher, den Desinfektionsfilter zu konfigurieren.

Als Beispiel kann die Weiße Liste alle html5 Tags und Attribute enthalten. Die Black List kann Tags & amp; Attribute, die ausgeschlossen werden sollen.

    
Basil Musa 02.12.2015 15:50
quelle
0

Je mehr du erlaubst, desto mehr Tricks, die schlauen Hackern erlauben, bösartigen Code in deine Webseite zu integrieren. Deshalb möchten Sie so wenig wie möglich zulassen.

Siehe Ruben van Vreeland Vortrag Wie wir LinkedIn gehackt haben & amp; Was geschah weiter für eine gute Einführung in XSS-Schwachstellen und warum Ihre Whitelist so streng wie möglich sein soll!

    
John Slegers 12.01.2016 19:57
quelle

Tags und Links