Cross-Site Scripting und SQL-Injection

Spitze Klammern filtern, reicht nicht

Dabei ist es nicht ausreichend, wenn Sie einfach nur die spitzen Klammern ausfiltern, um dadurch das Einbetten von <SCRIPT>-Tags zu umgehen. Um genau zu sein, macht es nicht viel Sinn, diese Klammern blind auszufiltern. r Besucher die Maus nun über das Bild, so wird der Inhalt des Cookies per alert angezeigt. Der Angreifer hätte diesen Inhalt aber natürlich auch an seinen eigenen Server senden können. Aus diesem Beispiel kann man zwei Dinge lernen: Zum einen bringt es nichts, einfach nur spezielle Zeichen auszufiltern, zum anderen verfügen Sie nun über eine einfache Methode, um Ihre ASP-Seiten auf XSS-Probleme zu testen. Mit einem leicht geänderten Querystring können Sie damit auch Ihre PHP-Seiten testen.

Neben der speziellen Filterung von Inhalten pro Feld lässt sich eine allgemeine Methode zum Sichern der dynamisch erzeugten Daten einsetzen: Sofern die Daten für eine Webseite verwendet werden, benutzen Sie die Funktion HTMLEncode für alle ausgegebenen Strings mit unsicherem Ursprung, für URLs können Sie URLEncode nutzen. Bei beiden Methoden werden alle potenziell gefährlichen Zeichen dadurch neutralisiert, dass sie vor der Ausgabe "escaped" werden.

Bei PHP finden Sie ähnliche Funktionen unter den Namen htmlentities, htmlspecialchars und urlencode. Das CERT Advisory zu XSS mit einigen weiteren Informationen finden Sie hier.