Kurz erklärt
Cross-Site Scripting (XSS) bezeichnet Angriffe, bei denen schädlicher JavaScript-Code in Webseiten eingeschleust wird. Der Code wird dann im Browser der Opfer ausgeführt und kann Cookies stehlen, Formulardaten abfangen oder Nutzer auf Phishing-Seiten umleiten.
Die drei XSS-Typen
Reflected XSS (Typ I): Der Angreifer schickt einen manipulierten Link per E-Mail. Das Opfer klickt, und der Schadcode wird vom Server „reflektiert” – er erscheint in der Antwort und wird ausgeführt.
Beispiel: beispiel.de/suche?q=<script>stehle_cookies()</script>
Stored XSS (Typ II): Gefährlicher, weil der Schadcode permanent in der Datenbank gespeichert wird – etwa in Kommentarfeldern, Foren oder Nutzerprofilen. Jeder Besucher, der die infizierte Seite öffnet, führt den Code aus.
DOM-based XSS (Typ III): Der Angriff findet komplett im Browser statt, ohne Server-Interaktion. Schwerer zu erkennen, da keine verdächtigen Anfragen protokolliert werden.
Reale Fallbeispiele
- Fortnite (2019): 200 Millionen Nutzerkonten gefährdet, virtuelle Währung gestohlen
- Hotjar (2024): 1+ Million Websites durch XSS+OAuth-Lücke angreifbar
- jQuery (CVE-2020-11023, 2024): Aktiv ausgenutzte XSS-Lücke, CISA-Warnung
- Samy-Wurm (2005): Infizierte innerhalb von 20 Stunden über eine Million MySpace-Profile
Schutzmaßnahmen
Content Security Policy (CSP): Mit script-src 'nonce-{random}' 'strict-dynamic' werden nur Skripte mit gültigem Nonce ausgeführt. Injizierter Code hat keinen Nonce und wird blockiert – selbst wenn die Eingabevalidierung versagt.
Input-Validierung: Whitelist-Ansatz für alle Nutzereingaben – nur explizit erlaubte Zeichen akzeptieren.
Output-Encoding: Alle Nutzereingaben vor der Ausgabe im Browser escapen (HTML-Entities, JavaScript-Escaping).
HTTP-Only Cookies: Das HttpOnly-Flag verhindert, dass JavaScript auf Session-Cookies zugreifen kann – selbst bei erfolgreichem XSS bleiben Sessions geschützt.
Nächste Schritte
- Content Security Policy (CSP) implementieren – wichtigste Schutzmaßnahme
- Alle Nutzereingaben validieren und sanitizen
- Session-Cookies mit
HttpOnly und Secure Flags schützen
- Moderne Frontend-Frameworks (React, Vue, Astro) nutzen, die Auto-Escaping bieten