DOM-gebaseerde XSS
XSS-variant waarbij de exploit de server nooit raakt: kwetsbare JavaScript in de client leest gebruikersinvoer (URL-hash, location, localStorage) en voert die ongesaneerd uit of zet die met innerHTML in de pagina.
Klassiek: document.getElementById('container').innerHTML = location.hash, waarna een URL met #<img onerror=alert(1) src=x> de code activeert. Server-side verdediging (escapen bij uitvoer) helpt NIET, want de aanval vindt aan de clientkant plaats. Verdediging: vermijd innerHTML, gebruik textContent, escape gebruikersdata vóór DOM-manipulatie en gebruik Trusted Types (een Chrome-API die veilig-door-constructie afdwingt). React en Vue beperken het risico door JSX-autoescaping. Single-page-apps hebben een groter DOM-XSS-oppervlak omdat alle rendering in de client gebeurt. CSP is de beste mitigatie: 'unsafe-eval' uit en scripts alleen toestaan via een nonce.