XSS (Cross-Site Scripting)
Cross-Site Scripting ist ein Angriff, bei dem ein Angreifer schädlichen JavaScript-Code in Webseiten einschleust, der dann im Browser anderer Nutzer ausgeführt wird und Session-Hijacking, Phishing oder Malware-Verteilung ermöglicht.
Cross-Site Scripting (XSS) ist eine der häufigsten Schwachstellen in Webanwendungen. Im Gegensatz zu SQL Injection greift XSS nicht den Server an, sondern nutzt den Browser des Opfers als Angriffswerkzeug.
XSS-Typen
Reflected XSS: Der schädliche Code ist Teil der HTTP-Anfrage (z. B. URL-Parameter) und wird sofort in der Antwort reflektiert. Erfordert, dass das Opfer einen präparierten Link anklickt.
Stored XSS: Der schädliche Code wird dauerhaft in der Datenbank gespeichert (z. B. in Kommentarfeldern, Benutzerprofilen) und bei jedem Seitenaufruf anderer Nutzer ausgeführt. Besonders gefährlich.
DOM-based XSS: Der Angriff erfolgt vollständig clientseitig, indem JavaScript das DOM auf Basis von nicht-validierten Nutzerinputs manipuliert. Nicht im HTTP-Response sichtbar, daher schwerer zu erkennen.
Auswirkungen
- Session Hijacking: Stehlen von Sitzungscookies → Account-Übernahme
- Credential Harvesting: Gefälschte Login-Formulare im Kontext der echten Website
- Malware-Distribution: Drive-by-Downloads durch XSS
- Keylogging: Aufzeichnung von Tastatureingaben
- CSRF-Bypass: XSS kann CSRF-Tokens stehlen
Schutzmaßnahmen
- Output Encoding: Alle Nutzerdaten müssen kontextabhängig escaped werden (HTML-Entities, JS-Encoding)
- Content Security Policy (CSP): HTTP-Header, der inline JavaScript und unbekannte Script-Quellen blockiert
- Sanitization: Vor der Speicherung in der Datenbank
- HttpOnly- und Secure-Cookies: Verhindert JavaScript-Zugriff auf Session-Cookies
- Modern Frontend Frameworks: React, Angular, Vue escapen standardmäßig, wenn korrekt verwendet