XSS: stored, reflected e DOM-based
Cross-site scripting è codice dell'attaccante eseguito nel contesto di un altro sito: ruba cookie, sessioni, esegue azioni come l'utente.
Le tre varianti
Reflected: il payload è nella richiesta e torna nella risposta (?q=<script>...). Serve ingannare la vittima a cliccare un link.
Stored: il payload è salvato sul server (un commento) e colpisce ogni visitatore. Il più grave.
DOM-based: nessun server coinvolto, JavaScript lato client scrive input non fidato nel DOM:
document.getElementById('out').innerHTML = location.hash;Difesa
Encoding in base al contesto: HTML entity per il corpo, attribute-encoding negli attributi, JS-encoding dentro script. Usa API sicure (textContent, non innerHTML). Una Content-Security-Policy stretta limita il danno anche se un payload passa.