Bestimmte Html-Zeichen zur Formatierung von Texten in Formularen zulassen

Den eingegebenen Text kann man schon während der Eingabe oder spätestens vor dem Abschicken des Formulars mit JavaScript auf nicht erlaubte Zeichen prüfen und ggf. diese heraus filtern.

Sicherer ist aber die serverseitige Korrektur der Eingabedaten. Dazu können mit der Php-Funktion strip_tags() Ausnahmen zugelassen werden. Alle anderen Tags werden automatisch gefiltert.

Die Php-Funktion strip_tags() entfernt alle bösartigen Zeichen aus einem String. Wichtig könnte dies bei der Nutzung von Feedback-Formularen, Gästebüchern, Foren und anderem sein, damit kein bösartiger Programmcode eingeschleust werden kann. Aber gerade für Feedback von Besuchern, in Foren oder eigenen Einträgen will man dann doch bestimmte Html-Tags zulassen.

Das könnte zum Beispiel die folgenden Tags betreffen:

  • <p> für Blockelemente
  • <table> für Tabellen
  • <tr> für Tabellenzeilen
  • <td> für Tabellenfelder
  • <a> für Links
  • <i> für kursive Schrift
  • <b> für fette Schrift
  • <img> für Bilder
  • <h1>, <h2>, usw. für Überschriften

 

Für alles andere sollte keine Ausnahme definiert werden.

Die Lösung ist ganz einfach. Als zusätzlichen Parameter gibt man der Funktion definierte Ausnahmen mit auf den Weg:

$guter_string = strip_tags($boeser_string, ‚<p><b>‘);

 

Bsp.:

$boeser_string = ‚Hallo ich bin ein <?php echo „…“?> böser <b>String</b>‘;
$guter_string = strip_tags($boeser_string, ‚<p><b>‘);

 

Das Ergebnis sollte dann so ausschauen:

‚Hallo ich bin ein böser <b>String</b>‘

 

Alle Html-Tags ausser <p> und <b> werden also herausgefiltert. Der Autor hat jetzt die Möglichkeit seinen Eintrag mit Blöcken zu gliedern und Überschriften fett darzustellen. Für andere Tags kann die Parameterliste beliebig erweitert werden.

Als praktische Anwendung kann dieses Vorgehen auch für die Verarbeitung von Eingabedaten in Formularen von Content Management Systemen (CMS) nützlich sein, bzw. auch für diverse Module dieser CMS. Unter dem Aspekt der Sicherheit werden in der Regel bei der Verarbeitung von Daten aus Formularen alle Html-Tags komplett gefiltert. Um teilweise die obigen Ausnahmen dennoch zuzulassen, kann die entsprechende Funktion zur Eingabeverarbeitung einfach wie oben beschrieben erweitert werden.

Schreibe einen Kommentar