DOM-based XSS
XSS-Variante, bei der der Exploit den Server nie berührt – verwundbares JavaScript auf dem Client liest Benutzereingaben (URL-Hash, location, localStorage) und schreibt sie ungefiltert per eval oder innerHTML.
Klassiker: document.getElementById('container').innerHTML = location.hash → die URL #<img onerror=alert(1) src=x> löst aus. Serverseitige Schutzmaßnahmen (Escaping bei der Ausgabe) helfen NICHT – der Exploit passiert client-seitig. Schutz: innerHTML vermeiden, textContent verwenden, Benutzerdaten vor der DOM-Manipulation escapen, Trusted Types (Chrome-API, die Safe-by-Construction erzwingt). React und Vue verringern das Risiko durch automatisches JSX-Escaping. Single-Page-Apps haben eine größere DOM-XSS-Angriffsfläche, weil das gesamte Rendering client-seitig läuft. CSP ist die beste Gegenmaßnahme: 'unsafe-eval' deaktivieren plus nonce-basierte Skript-Freigabe.