Sinnvolles HTML in PHP mit dem HTML Purifier

Es kommt im Leben eines Programmierers stets der Punkt, wo er sich durch die Weiten des HTML graben, und es insbesondere mit PHP interpretieren muss. Natürlich könnte man jetzt argumentieren das heutzutage Templates das regeln aber das Problem liegt ganz wo anders: Alt-Anwendungen und WYSIWYG-HTML-Editoren.

Erstere haben es nicht so Ernst genommen mit dem Standardkonformen, zweitere haben in der Regel auch ihre eigene Auslegung davon, was valides HTML ist. Hinzu kommt aber noch ein dritte Anwendungsmöglichkeit: Cross-Site Scripting! Über HTML-Injection könnte über den WYSIWYG-Editor nämlich durchaus schadhafter Code in eine Web-Anwendung eingeschleust werden. Natürlich könnte man jetzt argumentieren, dass nur vertrauenswürdige Personen HTML liefern dürfen. Die Realität sieht aber in der Regel anders aus: Hier braucht man nur einmal an die Kommentarfunktion von WordPress zu denken, oder die Tatsache, dass ein bekannter Bundespolitiker es nicht geschafft hat, seine Typo3-Installation geeignet zu schützen.

Entsprechend ist klar, dass man als Programmierer mehrere Aufgaben hat: Man muss dafür sorgen, dass alles standardkonform ist (und am besten bereits so abgespeichert wird) und man muss zusätzlich auf das Einschleusen von Schadcode testen! Viele Open Source-Anwendungen behelfen sich hier damit, die Anzahl der möglichen HTML-Tags zu begrenzen. Dies ist leider eine nicht so gute Idee, da das Ergebnis deshalb noch lange nicht valides HTML ist.

Screenshot der HTML-Purifier-Homepage

Warum ich das alles erzähle? Der HTML Purifier ist in der Version 4.0 für PHP5 erschienen. Der rattenschnelle Parser überprüft den Code und formt ihn zu standardkonformen HTML um. Überprüfen heißt hierbei: Verhindern von Cross-Site Scripting Attacken.

Die beiden Content Management Systeme ImpressCMS und Midgard setzen fest auf den HTML Purifier und liefern diesen bereits mit dem Core aus. Aber neben vielen weiteren Systemen kann man den HTML Purifier mittels eines einfachen Plugins auch in WordPress, Drupal und MODx einbinden. Joomla, CodeIgniter und Symfony Plugins sind ebenfalls verfügbar.

Das Teil ist so etwas wie das Schweizer Taschenmesser des HTML-Parsing in HTML, also werft strip_tags in die Ecke und versucht es einmal mit einem richtigen Parser :)

Ähnliche Beiträge

mysql_connect vs. mysql_pconnect Es gibt durchaus Blog-Beiträge, von denen man glaubt oder hofft, dass man sie eigentlich nicht schreiben braucht, dieser ist einer davon! Da ich mich ...
Tutorial Amazon Web Services mit PHP – III &... Im vorherigen Teil haben wir eine XML von den AWS mit cURL geladen. Aber Was heißt eigentlich Funktionscaching, und wieso brauchen wir das? Ganz einfa...
Serverseitige Komprimierung Tja, wer es noch nicht weiß, Seiten lassen sich auf dem Server mit gzip komprimieren, und der Browser entpackt diese dann automatisch. Soweit zumindes...
Besseres Debugging in PHP Debugging in PHP ist das größte Arschloch von allen nicht schön. Wohl dem, der einigen Aufwand betrieben hat, um XDebug an den Start zu kriegen. Aber ...

Ein Kommentar

Schreibe einen Kommentar