XSS ist eine Sicherheitslücke in Webanwendungen, bei der Angreifer schädlichen Code – meist JavaScript – in Webseiten einschleusen, die andere Nutzer aufrufen. Dadurch kann ein Angreifer Aktionen im Browser des Opfers ausführen, ohne dessen Wissen oder Zustimmung. XSS zählt zu den häufigsten und gefährlichsten Web‑Schwachstellen.
Die drei Hauptarten von XSS
1. Reflected XSS
- Der schädliche Code wird über eine URL oder ein Formular eingeschleust.
- Die Anwendung gibt diesen Code direkt im Response zurück.
- Das Opfer muss auf einen präparierten Link klicken.
Typisch: Suchfelder, Fehlermeldungen, GET‑Parameter.
2. Stored XSS
- Der Code wird dauerhaft auf dem Server gespeichert.
- Jedes Opfer, das die betroffene Seite aufruft, wird automatisch angegriffen.
Typisch: Kommentare, Forenbeiträge, Profilfelder.
3. DOM‑Based XSS
- Der Angriff findet komplett im Browser statt.
- JavaScript im Client verarbeitet Eingaben unsicher und führt sie aus.
Typisch: unsichere Manipulation von innerHTML, URL‑Fragmenten oder Query‑Parametern.
Was Angreifer mit XSS erreichen können
XSS ermöglicht unter anderem:
- Session‑Cookies auslesen (und damit Benutzerkonten übernehmen)
- Aktionen im Namen des Opfers ausführen
- Inhalte der Seite manipulieren
- Phishing direkt innerhalb einer legitimen Seite
- Keylogging im Browser
- Weiterleitungen auf schädliche Seiten
XSS ist deshalb besonders gefährlich, weil der Angriff im Kontext der vertrauenswürdigen Website ausgeführt wird.
Wie man XSS verhindert
1. Output‑Encoding
Alle Benutzereingaben korrekt escapen, bevor sie im HTML erscheinen:
- HTML‑Kontext
- JavaScript‑Kontext
- URL‑Kontext
- CSS‑Kontext
2. Input‑Validierung
Nur erlaubte Zeichen zulassen, besonders bei Feldern, die HTML enthalten könnten.
3. Content Security Policy (CSP)
Eine CSP kann verhindern, dass eingeschleuster Code ausgeführt wird.
4. Keine unsicheren Funktionen
Beispiele:
- innerHTML → besser textContent
- document.write vermeiden
5. HTTP‑Only Cookies
Schützt Cookies vor JavaScript‑Zugriff.
Wie XSS erkannt wird
- Penetrationstests
- Security‑Scanner
- Code‑Reviews
- Browser‑Developer‑Tools
- Logging und Monitoring