1
Hi,
All jene, die TinyMCE oder allgemein HTML-Code für Fremdbenutzereingaben zulassen, begeben sich damit in Gefahr, XSS-Attacken Tür und Tor zu öffnen. TinyMCE arbeitet im Hintergrund mit HTML-Code und besitzt auch eine clientseitige Funktion, um den Code von ungewollten Tags und Attributen zu befreien. Schaltet der Angreifer jedoch Javascript aus, kann er munter bösartigen HTML-Code in die Textarea tippen und das System sehr leicht mit Schadcode infiltrieren. Schade - da TinyMCE doch eigentlich ungemein benutzerfreundlich ist.
Es ist also klar, dass der HTML-Code im Nachhinein auf Server-Seite noch gefiltert werden muss. strip_tags reicht hierfür nicht aus, da die Funktion zwar alle ungewollten Tags entfernt, aber die Attribute behält.
Viele XSS-Filter, die sich finden, sind leider unvollständig und wartungsabhängig, da sie auf Blacklist-Verfahren basieren. Nur zu filtern, was nicht da sein darf, ist sicherheitstechnisch allgemein eine schlechte Idee, ist also nicht empfehlenswert.
Deshalb: verwendet auf Whitelist basierende Filter - also alles filtern, was unbekannt und nicht ausdrücklich erlaubt ist. HTMLPurifier ist eine geradezu perfekte Lösung, eine Library, die mich sehr begeistert hat. Nicht nur haben XSS-Attacken ausgespielt, der Code wird auch noch auf Validität überprüft. So können euch User auch nicht euren sauberen Code durch ungültige Eingaben verunstalten.
All jene, die TinyMCE oder allgemein HTML-Code für Fremdbenutzereingaben zulassen, begeben sich damit in Gefahr, XSS-Attacken Tür und Tor zu öffnen. TinyMCE arbeitet im Hintergrund mit HTML-Code und besitzt auch eine clientseitige Funktion, um den Code von ungewollten Tags und Attributen zu befreien. Schaltet der Angreifer jedoch Javascript aus, kann er munter bösartigen HTML-Code in die Textarea tippen und das System sehr leicht mit Schadcode infiltrieren. Schade - da TinyMCE doch eigentlich ungemein benutzerfreundlich ist.
Es ist also klar, dass der HTML-Code im Nachhinein auf Server-Seite noch gefiltert werden muss. strip_tags reicht hierfür nicht aus, da die Funktion zwar alle ungewollten Tags entfernt, aber die Attribute behält.
Viele XSS-Filter, die sich finden, sind leider unvollständig und wartungsabhängig, da sie auf Blacklist-Verfahren basieren. Nur zu filtern, was nicht da sein darf, ist sicherheitstechnisch allgemein eine schlechte Idee, ist also nicht empfehlenswert.
Deshalb: verwendet auf Whitelist basierende Filter - also alles filtern, was unbekannt und nicht ausdrücklich erlaubt ist. HTMLPurifier ist eine geradezu perfekte Lösung, eine Library, die mich sehr begeistert hat. Nicht nur haben XSS-Attacken ausgespielt, der Code wird auch noch auf Validität überprüft. So können euch User auch nicht euren sauberen Code durch ungültige Eingaben verunstalten.