Protection contre les attaques CSRF dans React et les configurations d’API
Implémentez les cookies SameSite, les jetons CSRF et les modèles de double soumission de cookie dans des configurations React SPA et SSR.
Protection contre les attaques CSRF dans React et les configurations d’API est une leçon React 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 React Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours React Academy comprend 4 leçons au total.
Qu’est-ce que le CSRF
La falsification de requête intersite (CSRF) est une attaque au cours de laquelle un site malveillant incite le navigateur de l’utilisateur à envoyer une requête authentifiée à votre API. Comme le navigateur joint automatiquement les cookies aux requêtes, le serveur ne peut pas distinguer une requête légitime provenant de votre application d’une requête falsifiée provenant du site de l’attaquant.
Pourquoi les cookies rendent le CSRF possible
Les cookies sont à l’origine de la vulnérabilité CSRF. Lorsqu’un utilisateur est connecté à votre application, son cookie de session est stocké dans le navigateur. Lorsqu’il consulte la page de l’attaquant, celui-ci peut déclencher l’envoi d’un formulaire ou une requête de récupération vers votre API, et le navigateur inclut automatiquement le cookie de session, authentifiant ainsi la requête malveillante.
Attribut de cookie SameSite
L’attribut de cookie SameSite indique aux navigateurs quand inclure les cookies dans les requêtes intersites. Il possède trois valeurs : Lax (valeur par défaut dans les navigateurs modernes : bloque les POST intersites, mais autorise les GET), Strict (bloque toutes les requêtes intersites, y compris les navigations GET) et None (autorise les requêtes intersites, mais exige l’indicateur HTTPS Secure).
SameSite=Lax et API sûres
SameSite=Lax bloque les requêtes intersites POST, PUT, DELETE et PATCH, c’est-à-dire les méthodes utilisées pour les mutations. Si votre API utilise GET uniquement pour les lectures et POST pour toutes les mutations, SameSite=Lax empêche efficacement le CSRF pour les SPA dans les navigateurs modernes. Il s’agit de la mesure d’atténuation de référence sur laquelle s’appuient aujourd’hui la plupart des applications.
Modèle du double envoi de cookie
Le modèle du double envoi de cookie est une mesure d’atténuation du CSRF dans laquelle le serveur définit un jeton CSRF aléatoire dans un cookie non-HttpOnly. Le client lit la valeur de ce cookie et l’inclut dans un en-tête de requête personnalisé (par exemple : X-CSRF-Token). Le serveur vérifie que la valeur de l’en-tête correspond à celle du cookie. Un attaquant ne peut pas lire le cookie depuis une autre origine et ne peut donc pas définir l’en-tête correct.
Modèle du jeton synchroniseur
Le modèle du jeton synchroniseur génère un jeton CSRF unique pour chaque session utilisateur sur le serveur. Pour les formulaires HTML, le jeton est intégré dans un champ masqué. Pour les appels d’API d’une SPA, le jeton est fourni par un point d’accès ou une balise de métadonnées, puis envoyé dans un en-tête personnalisé. Le serveur valide le jeton lors de chaque requête qui modifie l’état.
JWT dans l’en-tête Authorization : non vulnérable
Une SPA React qui stocke son JWT en mémoire ou dans localStorage et l’envoie dans un en-tête Authorization: Bearer n’est pas vulnérable au CSRF classique. Les attaques CSRF exploitent l’authentification fondée sur les cookies : la page d’un attaquant ne peut pas définir d’en-têtes personnalisés lors de requêtes interorigines en raison des restrictions CORS, et ne peut donc pas falsifier l’en-tête Authorization.
Les en-têtes personnalisés comme mesure d’atténuation du CSRF
Les requêtes interorigines simples (POST de formulaire, chargement d’image) n’autorisent pas les en-têtes personnalisés. Seules les requêtes soumises à une prévalidation CORS peuvent inclure des en-têtes personnalisés, et les requêtes prévalidées exigent l’autorisation explicite du serveur. Une API qui exige un en-tête personnalisé (comme X-Requested-With: XMLHttpRequest) pour toutes les mutations est intrinsèquement protégée contre les attaques CSRF simples.
CORS et CSRF sont différents
CORS contrôle quelles origines peuvent lire la réponse d’une requête interorigines. CSRF concerne les origines qui peuvent envoyer des requêtes modifiant l’état. Configurer CORS pour restreindre les origines n’empêche pas CSRF : le navigateur envoie toujours la requête et le cookie ; CORS contrôle uniquement si la réponse est visible pour JavaScript. Une attaque CSRF n’a pas besoin de lire la réponse.
Bonnes pratiques pour les cookies de session
Configurez les cookies de session avec : HttpOnly: true (empêche JavaScript de lire le cookie et bloque ainsi le vol de jetons fondé sur XSS), Secure: true (envoyé uniquement via HTTPS), SameSite: Lax ou Strict (empêche CSRF), ainsi qu’une valeur ou une expiration Max-Age appropriée. Ces quatre attributs renforcent considérablement la gestion des sessions.
CSRF dans le routeur d’application de Next.js
Le routeur d’application de Next.js utilise des actions serveur, qui sont des requêtes POST. Next.js met en œuvre une protection contre CSRF en comparant l’en-tête Origin à l’hôte ; les requêtes provenant d’origines inattendues sont rejetées. Cette vérification intégrée, associée aux cookies de session SameSite=Lax, fournit une protection solide contre CSRF pour les opérations de modification fondées sur les actions serveur.
Attribut de cookie SameSite
Quelle valeur de cookie SameSite bloque les requêtes POST intersites tout en autorisant les navigations GET intersites ?
Récapitulatif de la leçon
CSRF exploite l’authentification fondée sur les cookies en incitant le navigateur à envoyer des requêtes intersites authentifiées. SameSite=Lax constitue la défense de base des navigateurs modernes. Les modèles du cookie à double soumission et du jeton synchronisé fournissent une protection supplémentaire. Les SPA React qui utilisent des JWT dans les en-têtes Authorization résistent intrinsèquement à CSRF. Les en-têtes obligatoires personnalisés et la vérification préalable de CORS atténuent également CSRF. Combinez toujours HttpOnly + Secure + SameSite sur les cookies de session.
Questions Fréquemment Posées
La leçon « Protection contre les attaques CSRF dans React et les configurations d’API » est-elle gratuite ?
Oui — le texte complet de « Protection contre les attaques CSRF dans React et les configurations d’API » 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 React Academy, passe à CoddyKit PRO. Le cours React Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Protection contre les attaques CSRF dans React et les configurations d’API » ?
Implémentez les cookies SameSite, les jetons CSRF et les modèles de double soumission de cookie dans des configurations React SPA et SSR. Tu pratiques React 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 React Academy ?
Aucune expérience préalable n'est requise. React 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 « Protection contre les attaques CSRF dans React et les configurations d’API » ?
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 React Academy ?
Oui. Chaque leçon React 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
- XSS dans React : dangerouslySetInnerHTML et scripts tiers
- Protection contre les attaques CSRF dans React et les configurations d’API
- Politique de sécurité du contenu pour les applications React
- Gestion des secrets et variables d’environnement