Das Cross Site Scripting (XSS) gehört zu den häufigsten Angriffsmethoden auf Internetseiten. Dabei bezieht sich das Cross Site nicht unbedingt darauf, dass zwei Seiten beteiligt sind, sondern darauf, dass der Angriff zwischen mehreren Aufrufen einer Seite passiert. Grundsätzlich ist Cross Site Scripting eine spezielle Form von HTML-Injection, und es passiert meist in Formularen, in denen Benutzerdaten eingegeben und ungeprüft weiterverarbeitet werden. Da kann dann ein Angreifer leicht ausführbaren Programmcode ins System schmuggeln.
Sie haben das vielleicht schon einmal im Gästebuch, Blog, Wiki oder Forum erlebt. Ein Angreifer gibt zum Beispiel dort einen Schadcode ein, der dann auf dem Client eines Benutzers, der sich das Gästebuch anschaut, ausgeführt wird. Der Schadcode ist meist in Javascript geschrieben.
Deshalb sollte man beim Erstellen einer solchen Seite alles tun, um das injizieren von ausführbarem Code zu verhindern. Dazu bieten sich mehrere einfache Möglichkeiten an, die die Sicherheit merkbar erhöhen.
Zunächst sollte man alle Eingaben von Benutzern als unsicher und bösartig betrachten und deshalb auf jeden Fall vor die weitere Verarbeitung eine Prüfung der Eingabewerte schalten. Als erstes sollte die Länge geprüft werden. Eine deutsche Postleitzahl mit mehr als 5 Stellen ist je nach Inhalt entweder ein Eingabefehler und sollte dem Benutzer zurück gemeldet werden oder aber ein versuchter XSS-Angriff. Prüfen kann man die Länge mit einem Befehl wie:
If (strlen($plz) > 5) die „Postleitzahl ist ungültig!“ ;
In ähnlicher Weise kann man auch auf den Datentyp prüfen. Diese Überprüfungen bringen aber selten einen XSS-Angriff ans Licht, sondern eher allgemeine Manipulationsversuche an den Parametern oder einfach nur Eingabefehler. Auch das verbessert die Qualität des Formulars. Um aber zum Beispiel die Tags eines Angreifer-Scripts zu entfernen, können Sie die Funktion strip_tags() von PHP benutzen. Der Befehl:
$nachrichtok=strip_tags($nachricht);
entfernt alle HTML-Tags aus dem Eingabefeld $nachricht und stellt eine bereinigte Version in die Variable $nachrichtok. Selbst wenn hier Javascript-Code eingefügt wurde, kann er so keinen Schaden mehr anrichten.
Schon diese einfachen Maßnahmen lassen den größten Teil der Angriffe auf formularbasierte Funktionen von Internetseiten scheitern. Wenn man hier allerdings absolute Sicherheit haben möchte, oder wenn man HTML-Formatierungen zulassen und trotzdem sicher für XSS sein möchte, hilft nur ein noch tieferes Eindringen in die Materie. Eine Suche in Google mit den entsprechenden Suchbegriffen führt hier weiter.