4.10.4 Htmlspecialchars()

Eines der ersten Dinge, die Sie bei der Erstellung eines Formularfeldes unbedingt beachten müssen: Ein Angreifer wird versuchen, ein Formularfeld als Sicherheitslücke auszunutzen.

Angenommen, Sie haben ein Formularfeld mit PHP erstellt und möchten die übermittelten Daten dann weiter verarbeiten (auf einer Seite anzeigen oder in eine Datenbank speichern). Zum Anzeigen der Daten auf einer Seite könnten Sie beispielsweise folgenden Sourcecode verwenden:

echo "Name: " . $_POST["$name"] . "<br>";

Das Problem dabei ist, dass die eingegebenen Daten nicht überprüft, sondern direkt in der Ausgabe verwendet oder noch schlimmer in eine Datenbank geschrieben werden.

Ein Angreifer könnte folgendes in das Formularfeld eingeben:

test <b>

Oder

test<script>prompt("Bitte Passwort eingeben")</script>

Oder wirklich schädlichen JavaScript-Code eingeben. Die Art des Angriffes ist als XSS-Attacke bekannt und muss auf mehreren Ebenen verhindert werden.

Eine der ersten Schutzmaßnahmen ist, dass Sie alle Daten vom Client "behandeln". Verwenden Sie beispielsweise die PHP-Funktion htmlspecialchars(), so werden HTML-Sonderzeichen maskiert und somit unschädlich gemacht.

echo "Name: " . htmlspecialchars($_POST["$name"]) . "<br>";

Warnung

Sie müssen alle Daten, die ein PHP-Programm als Eingabedaten bekommt, sehr kritisch behandeln. Vertiefend wird darauf im Kapitel Reguläre Ausdrücke mit PHP eingegangen. htmlspecialchars() bietet dabei einen ersten Schutz, der ab jetzt in all ihren Programmierungen eingesetzt werden sollte.

Weitere Links zum Thema: