Was ist XSS?

XSS steht für Cross-Site Scrip­ting – das ist eine Sicher­heits­lü­cke in Web­sei­ten, bei der bös­ar­ti­ger Code (meist Java­Script) ein­ge­schleust wird.

Das Ziel: Ein Angrei­fer will, dass eine Web­sei­te etwas aus­führt, das sie eigent­lich nicht tun soll­te, zum Beispiel:

  • frem­den Code im Brow­ser aus­füh­ren,

  • Pass­wör­ter klau­en,

  • Daten aus For­mu­la­ren abfan­gen,

  • oder den Nut­zer aus­spio­nie­ren.


Ein ein­fa­ches Beispiel:

Stell dir vor, du bist auf einer Web­sei­te mit einem Gäs­te­buch.
Du schreibst dort nor­ma­ler­wei­se sowas wie:

„Hal­lo, tol­le Seite!“

Aber jetzt schreibt ein Angrei­fer dort stattdessen:

html
<script>alert('Hacked!');</script>

Wenn die Web­sei­te den Text unge­prüft anzeigt, pas­siert Folgendes:

  • Der Brow­ser denkt, das ist ech­ter Java­Script-Code.

  • Statt nur den Text anzu­zei­gen, wird der Code aus­ge­führt – z. B. ein Popup, das sagt „Hacked!“.

  • Noch schlim­mer: Der Angrei­fer könn­te Code ein­schleu­sen, der Coo­kies aus­liest, Tas­ta­tur­ein­ga­ben auf­zeich­netoder Daten an einen frem­den Ser­ver schickt.


War­um ist das gefährlich?

  • Der Code läuft im Brow­ser des Opfers, nicht auf dem Server.

  • Die Web­sei­te selbst wirkt ver­trau­ens­wür­dig, das macht es schwer zu erkennen.

  • Man denkt, man nutzt die Sei­te nor­mal – dabei wur­de sie mani­pu­liert.


Arten von XSS:

  1. Stored XSS (gespei­chert):
    Der böse Code wird dau­er­haft in der Daten­bank gespei­chert (z. B. über ein For­mu­lar oder ein Gäs­te­buch) und bei jedem Auf­ruf der Sei­te ausgeführt.

  2. Reflec­ted XSS (reflek­tiert):
    Der Code steckt in einem Link – z. B. wenn du auf einen mani­pu­lier­ten Link klickst, wird der Code sofort ausgeführt.

  3. DOM-based XSS:
    Die Schwach­stel­le steckt im Java­Script der Sei­te selbst, das Ein­ga­ben falsch verarbeitet.


Wie schützt man sich (als Entwickler)?

  • Nut­zer­ein­ga­ben nie­mals direkt anzei­gen – immer „escapen“ oder fil­tern.

  • Ver­wen­den von siche­ren Webframeworks.

  • Con­tent Secu­ri­ty Poli­cy (CSP) ein­set­zen, um gefähr­li­che Skrip­te zu blockieren.

  • HTML, Java­Script und ande­re Inhal­te tren­nen.


Zusam­men­ge­fasst:

  • XSS ist eine Sicher­heits­lü­cke, bei der Angrei­fer bös­ar­ti­gen Code auf Web­sei­ten ein­schleu­sen.

  • Der Code wird im Brow­ser des Nut­zers aus­ge­führt, nicht auf dem Server.

  • Ziel ist oft, Daten zu klau­en oder Nut­zer zu täuschen.

  • Web­sei­ten müs­sen Nut­zer­ein­ga­ben sicher ver­ar­bei­ten, um das zu verhindern.