Wie man HTML-Code in Java saniert, um XSS-Angriffe zu verhindern?
Ich bin auf der Suche nach Klasse/util etc. zur Bereinigung von HTML-code, d.h. entfernen Sie gefährliche tags, Attribute und Werte zu vermeiden, XSS-Attacken oder ähnliche Angriffe.
Bekomme ich html-code aus rich-text-editor (z.B. TinyMCE) aber es kann sein, senden Sie bösartige Weise um, ommiting TinyMCE Validierung ("Daten vorgelegt, die form off-site").
Ist es alles andere als einfach zu bedienen, wie InputFilter in PHP? Perfekte Lösung die ich mir vorstellen kann funktioniert wie, dass (unter der Annahme sanitizer ist gekapselt in HtmlSanitizer Klasse):
String unsanitized = "...<...>..."; //some potentially
//dangerous html here on input
HtmlSanitizer sat = new HtmlSanitizer(); //sanitizer util class created
String sanitized = sat.sanitize(unsanitized); //voila - sanitized is safe...
Update - die einfachere Lösung ist, desto besser! Kleine util-Klasse mit so wenig externen Abhängigkeiten zu anderen Bibliotheken/frameworks wie möglich - am besten wäre für mich.
Wie das?
InformationsquelleAutor der Frage WildWezyr | 2010-08-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie versuchen,OWASP-Java-HTML-Sanitizer. Es ist sehr einfach zu bedienen.
InformationsquelleAutor der Antwort Saljack
Könnten Sie OWASP ESAPI für Java, das ist ein Sicherheits-Bibliothek gebaut ist, dass solche Operationen.
Nicht nur, dass es Encoder für HTML, es hat auch Drehgeber zum ausführen von JavaScript -, CSS-und URL-Kodierung. Beispiele für die Verwendung von ESAPI finden Sie in der XSS-Prävention cheatsheet veröffentlicht von OWASP.
Könnten Sie die OWASP AntiSamy Projekt so definieren Sie eine site policy, die besagt, was erlaubt ist, im Benutzer-Inhalte. Die Nutzungsbedingungen können später genutzt werden, um "sauberen" HTML-Code, der angezeigt wird, zurück. Finden Sie eine Probe TinyMCE-Editor policy-Datei auf die AntiSamy Seite downloads.
InformationsquelleAutor der Antwort Vineet Reynolds
HTML-escaping-Eingänge funktioniert sehr gut. Aber in einigen Fällen Geschäftsregeln erfordern möglicherweise, dass Sie NICHT zu entkommen, die HTML. Mit REGEX ist nicht fit für die Aufgabe, und es ist zu schwer zu kommen mit einer guten Lösung verwenden.
Die beste Lösung, die ich fand war: http://jsoup.org/cookbook/cleaning-html/whitelist-sanitizer
Er baut einen DOM-Baum mit den mitgelieferten input und Filter jedes element nicht vorher erlaubt durch eine Whitelist. Die API hat auch andere Funktionen zum bereinigen von html.
Und es kann auch verwendet werden, mit javax.Validierung @SafeHtml(whitelistType=, additionalTags=)
InformationsquelleAutor der Antwort eduardohl
Dank @Saljack ist Antwort. Nur mehr erarbeiten zu OWASP-Java-HTML-Sanitizer. Es funktionierte wirklich gut (schnell) für mich. Ich habe gerade das folgende auf die pom.xml in mein Maven-Projekt:
Überprüfen hier für die neueste Version.
Dann habe ich diese Funktion für die Bereinigung:
Weitere tags Hinzugefügt werden können, durch die Verlängerung der durch Komma getrennte parameter in allowElements Methode.
Fügen Sie einfach diese Zeile vor der übergabe der Bohne aus um die Daten zu speichern:
Das ist es!
Für komplexere Logik, die diese Bibliothek ist sehr flexibel und es kann mit mehr anspruchsvolle Desinfektion der Umsetzung.
InformationsquelleAutor der Antwort P. Lee
Bezüglich Antisamy, möchten Sie vielleicht zu prüfen, diese hinsichtlich der Abhängigkeiten:
http://code.google.com/p/owaspantisamy/issues/detail?id=95&can=1&q=redyetidave
InformationsquelleAutor der Antwort RedYeti