Skip to content

Cross-Site Scripting durch Filter verhindern

Wir hatten ja schon festgestellt, dass die einfachste Lösung zum Verhindern von XSS, das Verbieten von HTML und damit JavaScript als Benutzereingabe, heutzutage sehr oft nicht mehr möglich ist.

Dass die Benutzer aber manuell HTML-Code eingeben kann man meist auch nicht erwarten, welcher normale Benutzer "spricht" schon HTML? Oder eine andere Auszeichnungssprache wie BBCode? Womit diese Lösung ebenfalls ausscheidet.

Unser Tool, unsere Daten, also alles ganz harmlos?

"Cross-Site Scripting durch Filter verhindern" vollständig lesen

Cross-Site Scripting verhindern, ganz allgemein

Am einfachsten verhindern Sie Cross-Site Scripting, indem Sie gar kein HTML und damit JavaScript als Benutzereingabe akzeptieren. Wenn die Eingabe nur aus reinem Klartext bestehen darf, kann sie beim Finden des ersten HTML-Tags verworfen werden. Denn dann versucht jemand einen Angriff, und der wird sofort abgewehrt, fertig, aus. Sie sollten nicht mal den Versuch machen, den enthaltenen Code aus der Eingabe zu löschen. Denn die Eingabe dient einzig und allein dazu, Schadcode in die Seiten Ihrer Webanwendung einzuschleusen. Es gibt darin nichts, was aus irgend einem Grund gerettet werden müsste.

Diese ebenso einfache wie effektive Lösung ist heutzutage nicht mehr immer möglich. In Zeiten des Web 2.0 mit seinem "User generated content" ist HTML-Code, zum Beispiel Auszeichnungs- oder Formatierungsanweisungen, oft ein erwünschter Teil der Eingabe. Und damit wird es deutlich schwieriger, erwünschte und unerwünschte Inhalte auseinander zu halten.

Ausgezeichnet, ganz ohne HTML!

"Cross-Site Scripting verhindern, ganz allgemein" vollständig lesen

XSS-Suche, Teil 3: Der Kontext bestimmt den Test

Nachdem Sie alle möglicherweise für XSS anfälligen Parameter der Webanwendung ermittelt und eine möglicherweise vorhandene Schutzfunktion erkannt haben, kann die Suche nach XSS-Schwachstellen los gehen.

Je nachdem, wo ein Parameter ausgegeben wird, müssen Sie andere Tests verwenden. Oder genauer: Sie müssen Ihren Test so an die Umgebung anpassen, dass er auch ausgeführt werden kann. Und nicht schon deshalb fehl schlägt, weil der Browser ihn gar nicht als ausführbar akzeptiert.

Beispiel 1: Ausgabe im normalen Text

"XSS-Suche, Teil 3: Der Kontext bestimmt den Test" vollständig lesen