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

Quality Assurance für PHP Sebastian Bergmann (ja, der von phpUnit) hat in seinem Blog einen interessanten Beitrag über Quality Assurance Tools für PHP veröffentlicht. Im Einzel...
debugConsole – PHP Debugging und Tracing Debugging und Tracing für PHP ist ein *piep*! ;) Das Problem ist in der Regel das, das ein „richtiges“ Debugging nur dann möglich ist, wenn der Webser...
Die Wunderwelt von PHP und cURL PHP kann eine Menge, und eine Menge sogar doppelt bis dreifach. Das öffnen entfernter Dateien kann mittels "normalem" Dateihandling auch über die soge...
Einfach mit PHP Twittern Lange hat ess gedauert, aber scheinbar ist nun auch Twitter in Deutschland angekommen. Der Dienst erfreut sich einer immer größeren Beliebtheit und sc...

Ein Kommentar

Schreibe einen Kommentar