Architecture & Sécurité

Qu’est-ce que CSRF (Cross-Site Request Forgery) ?

Attaque consistant à faire exécuter par un utilisateur authentifié une action non voulue sur un site (ex.

CSRF

Définition simple

C'est comme faire signer un virement avec le paraphe de la victime sans qu'elle regarde le papier : le site croit que l'action vient d'elle. Attaque consistant à faire exécuter par un utilisateur authentifié une action non voulue sur un site (ex. changement de mot de passe, virement, modification de données). L’attaquant exploite le fait que le navigateur envoie automatiquement les cookies de session à chaque requête : une page malveillante peut déclencher une requête POST vers le site cible, avec les cookies de la victime. Contremesures : tokens CSRF (valeur secrète liée à la session, vérifiée côté serveur), SameSite sur les cookies, vérification de l’origine (Origin/Referer). Le token CSRF est en général un secret unique par session (ou par requête) inclus dans le formulaire ou en en-tête ; le serveur le vérifie avant d’exécuter l’action. L’attribut SameSite=Strict ou Lax sur les cookies limite l’envoi des cookies lors de requêtes cross-site, ce qui réduit la surface d’attaque.

Comment ça marche ?

Le serveur génère un token CSRF (secret lié à la session), l'inclut dans le formulaire (champ caché) ou dans un cookie. À la soumission, le serveur vérifie que le token est présent et valide avant d'exécuter l'action. L'attribut SameSite sur les cookies limite l'envoi des cookies en requête cross-site.

Impact business

Une faille CSRF sur des actions sensibles (connexion, formulaire de commande, paramètres compte) peut permettre des prises de contrôle ou des actions frauduleuses. La mise en place de tokens CSRF et de bonnes pratiques cookies est une base de la sécurisation des applications web. Les frameworks modernes (Next.js, Django, Laravel) proposent des mécanismes CSRF intégrés ; les ignorer ou les désactiver sans alternative expose à des risques juridiques et de réputation. Un audit de sécurité inclut systématiquement la vérification des protections CSRF sur les formulaires et les API modifiant des données. Le Top 10 OWASP place toujours les ruptures de contrôle d'accès et les confusions de session parmi les causes dominantes de compromission ; ajouter tokens CSRF et cookies SameSite reste, dans la majorité des audits, une ligne à faible coût pour éliminer toute une classe d'exploits automatisés.

Bonnes pratiques

  • Utiliser un token CSRF sur tous les formulaires et API qui modifient des données et utilisent des cookies de session. Configurer SameSite=Strict ou Lax sur les cookies. Vérifier Origin ou Referer en complément. Ne jamais ignorer les mécanismes fournis par le framework.

Erreurs communes

  • Désactiver la protection CSRF « pour simplifier » ou l'oublier sur des formulaires sensibles (changement de mot de passe, formulaire de commande). Se reposer uniquement sur SameSite sans token pour les actions critiques.

Prompt IA

Contexte : stack [Next.js / Django / Laravel / autre], type d’app [formulaires web / API + SPA]. Explique en 3 étapes le déroulement d’une attaque CSRF. Donne la contremesure recommandée pour cette stack (token CSRF, SameSite, vérification Origin). Fournis un extrait de code : 1) génération et injection du token, 2) vérification côté serveur, 3) configuration des cookies (SameSite). Indique les endpoints à protéger en priorité.

QUESTIONS FRÉQUENTES

Aller plus loin sur CSRF (Cross-Site Request Forgery).

Utilisez un token CSRF : une valeur secrète unique (par session ou par requête) générée côté serveur, incluse dans le formulaire (champ caché) ou en en-tête. Le serveur vérifie que le token est présent et valide avant d’exécuter l’action. Complétez avec l’attribut SameSite sur les cookies (Strict ou Lax) pour limiter l’envoi des cookies en requête cross-site.