Cross-Site Request Forgery (CSRF)
Découvrez comment les attaques CSRF falsifient des requêtes authentifiées et comment les jetons CSRF et les cookies SameSite s’en protègent.
Cross-Site Request Forgery (CSRF) est une leçon Cyber Security Academy gratuite sur CoddyKit. Ceci est la leçon 3 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 CSRF ?
Falsification de requête intersite (CSRF) piège le navigateur d'un utilisateur authentifié pour qu'il envoie des requêtes non autorisées à une application web. Le navigateur envoie automatiquement les cookies avec les requêtes ; sans mesures supplémentaires, le serveur ne peut donc pas distinguer les requêtes légitimes des requêtes falsifiées.
Fonctionnement de CSRF
Scénario :
- La victime est connectée à bank.com (cookie de session dans le navigateur)
- La victime visite la page de l'attaquant contenant :
<img src="https://bank.com/transfer?to=attacker&amount=1000"> - Le navigateur envoie la requête GET avec le cookie de bank.com joint
- La banque traite le virement
CSRF avec des requêtes POST
Une attaque CSRF avec POST nécessite un formulaire :
<form action="https://bank.com/transfer" method="POST" id="f">
<input name="to" value="attacker">
<input name="amount" value="1000">
</form>
<script>document.getElementById("f").submit()</script>Jetons CSRF
La principale défense est un jeton CSRF : une valeur aléatoire et secrète, propre à chaque session (ou à chaque requête), intégrée aux formulaires. Le serveur valide le jeton pour chaque requête qui modifie l'état. Un attaquant situé sur un autre domaine ne peut pas lire le jeton (politique de même origine).
Attribut de cookie SameSite
SameSite=Strict : le cookie n'est jamais envoyé avec des requêtes intersites. SameSite=Lax : le cookie est envoyé lors des navigations sûres de premier niveau (liens), mais pas avec une requête POST provenant d'autres sites. Les navigateurs modernes utilisent Lax par défaut, ce qui réduit considérablement le risque de CSRF.
Schéma du double envoi de cookie
Une solution de remplacement au stockage des jetons côté serveur : définissez un cookie CSRF aléatoire et exigez qu'il soit également envoyé comme paramètre de requête. Un attaquant ne peut pas lire le cookie (même origine) et ne peut donc pas le faire correspondre aux données du formulaire.
En-têtes de requête personnalisés
Pour les requêtes AJAX, exiger un en-tête personnalisé (par exemple, X-Requested-With: XMLHttpRequest) fournit une protection contre CSRF, car les navigateurs empêchent les scripts interorigines de définir des en-têtes arbitraires (CORS applique cette règle).
Quand les jetons CSRF ne suffisent pas
Les jetons CSRF échouent dans les cas suivants :
- Un XSS existe : l'attaquant peut lire le jeton avec JavaScript
- Le jeton est divulgué dans l'URL (en-tête Referer)
- Le jeton est prévisible ou réutilisé
- CORS est mal configuré et autorise l'origine de l'attaquant
Tester la protection contre CSRF
Étapes de test :
- Identifiez les requêtes qui modifient l'état (POST, PUT, DELETE)
- Supprimez ou modifiez le jeton CSRF, puis renvoyez la requête
- Créez une soumission de formulaire interorigine et vérifiez si elle aboutit
- Vérifiez l'attribut SameSite des cookies de session
CSRF dans les API
Les API REST qui utilisent JSON sont souvent exemptées de protection contre CSRF si elles :
- Exigent
Content-Type: application/json(les formulaires HTML ne peuvent pas définir cet en-tête) - Utilisent une authentification par jeton (en-tête Authorization, et non des cookies)
En revanche, les API qui acceptent des cookies doivent tout de même mettre en œuvre une protection contre CSRF.
État actuel de la protection contre CSRF
SameSite=Lax étant la valeur par défaut dans Chrome, Firefox et Safari, de nombreuses attaques CSRF traditionnelles sont bloquées. Toutefois, les attaques visant les sous-domaines et certains modes de navigation peuvent encore contourner Lax. Combinez SameSite avec des jetons CSRF pour une défense robuste.
Vérification rapide : CSRF
Quelle est la principale défense contre les attaques CSRF dans les applications web ?
Récapitulatif de la leçon
CSRF exploite l'ajout automatique des cookies par le navigateur pour forger des requêtes authentifiées depuis des sites malveillants. Défense principale : jetons CSRF validés côté serveur. Défense secondaire : attribut de cookie SameSite=Strict/Lax. Les API utilisant une authentification par jeton dans les en-têtes (et non des cookies) résistent naturellement au CSRF. Combinez les défenses ; un XSS peut contourner les jetons CSRF s'il est présent.
Questions Fréquemment Posées
La leçon « Cross-Site Request Forgery (CSRF) » est-elle gratuite ?
Oui — le texte complet de « Cross-Site Request Forgery (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 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 Request Forgery (CSRF) » ?
Découvrez comment les attaques CSRF falsifient des requêtes authentifiées et comment les jetons CSRF et les cookies SameSite s’en protègent. 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 3 sur 4.
Combien de temps prend la leçon « Cross-Site Request Forgery (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 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