2017-09-27 1 views
0

schlecht Terminologie aktualisiertWarum führt OWASP HTML im Gegensatz zu einem Blacklist-Trust-Ansatz auf die weiße Liste?

Ich bin bei JSoup und OWASP Java HTML sanitizer project suchen. Ich bin nur an einem solchen Tool interessiert, um XSS-Angriffe zu verhindern, indem Benutzereingaben bereinigt werden, die an die API-Ebene weitergegeben werden. Das OWASP-Projekt sagt

"Passing 95 +% der AntiSamy Unit Tests plus viele mehr."

Aber es sagt mir nicht, wo ich diese Tests selbst sehen kann. Was umfassen diese Tests? Einfacher möchte ich wissen, warum diese genannten Tools die Vertrauenswürdigkeit auf die weiße Liste setzen.

Ich bin sicher, es gibt einen Grund für ihre Wahl Whitelisting vs Blacklisting. Ich möchte nur bekannte XSS unsichere Tags wie script und Attribute wie on* verbieten. Der Ansatz der Blacklist scheint nicht einmal möglich zu sein.

Ich muss wissen, was die Begründung dafür ist und ich vermute, dass es in den Tests ist. Zum Beispiel, warum verbieten style Tags? Ist es gefährlich in Bezug auf XSS oder existiert es aus einem anderen Grund? (style kann XSS unsicher sein wie in den Kommentaren erwähnt: XSS attacks and style attributes)

Ich bin auf der Suche nach mehr XSS unsicheren Rechtfertigungen für andere Tags. Die Unit-Tests selbst sollten ausreichen, wenn jemand weiß, wo er sie finden kann. Angesichts genügend unsicherer Tags sollte mir das erklären, warum ein Whitelist-Ansatz notwendig ist.

+1

Ihre Verwendung von "Blacklist" und "Whitelist" ist verwirrend für mich. Ein "Blacklist" -Mechanismus würde standardmäßig alles zulassen und erfordern, dass der Benutzer explizit Dinge auflistet, die er verbieten möchte. Eine "Whitelist" würde standardmäßig alles ablehnen und den Benutzer auflisten, was er zulassen möchte. OWASP Java HTML-Sanitizer verwendet White Listing; Standardmäßig wird alles abgelehnt, und Sie erstellen eine Richtlinie, indem Sie das angegebene Markup zulassen. – erickson

+0

@erickson - Verstanden, meine Terminologie ist verrückt. Danke für den Link, das ist sehr hilfreich. Wenn jemand eine Verbindung zu den oben erwähnten "AntiSamy Unit Tests" herstellen kann, wird diese Frage zu 100% beantwortet. –

Antwort

1

Die ursprünglichen Anti-Amyy-Tests sind in AntiSamyTest (antisamy).

Sie wurden für OWASP in AntiSamyTest (owasp) angepasst.

Sie enthalten die Tests gegen verschiedene HTML-Fragmente, zum Beispiel:

assertSanitizedDoesNotContain("<TABLE BACKGROUND=\"javascript:alert('XSS')\">", "background"); 

assertSanitizedDoesNotContain("<META HTTP-EQUIV=\"refresh\" CONTENT=\"0;url=data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K\">", "<meta"); 

die XSS Evasion Cheat Sheet für einige weitere Beispiele.

Wir haben Blacklists versucht, aber wir haben immer neue Tags oder Attribute gefunden, um die Blacklist zu umgehen, oder fehlerhafte HTML und andere Codierungen wurden von Bypassfiltern verwendet, was Blacklists unpraktisch und unwirksam macht. Die Standardannahme lautet nun: Wenn ein Tag, Attribut oder Stil nicht explizit als sicher angegeben ist, ist es unsicher. Dies schützt nicht nur vor den bekannten xss-Angriffen, sondern auch vor vielen neuen.

Verwandte Themen