
Table des matières
Le CSRF : l’ennemi silencieux de la sécurité applicative
Parmi les attaques insidieuses du web, l’attaque CSRF (Cross-Site Request Forgery) se démarque par sa discrétion et sa capacité à exploiter la confiance entre un utilisateur et un site web. Comment fonctionne cette attaque, et que pouvez-vous faire pour l’empêcher ?
Si vous pensez être exposé à une attaque CSRF ou souhaitez mieux comprendre ce type de menace, vous êtes au bon endroit. Explorons ensemble le fonctionnement de cette méthode, pourquoi elle est dangereuse, et surtout, comment s’en prémunir efficacement.
En résumé :
- 🔍 C’est quoi une attaque CSRF ?
Une attaque qui incite un utilisateur connecté à un site web à exécuter, à son insu, une action malveillante (comme modifier un mot de passe ou effectuer un virement). - 🛡 La première mesure à prendre ?
Implémentez des tokens CSRF dans les formulaires sensibles pour vérifier que chaque requête vient bien de l’utilisateur légitime. - 🔐 Même connecté, restez protégé :
Ne vous fiez pas uniquement à la session. La validation côté serveur (jetons, en-têtes personnalisés) est essentielle.
Qu’est-ce qu’une attaque CSRF ?
Imaginez que vous soyez connecté à votre banque en ligne, puis vous cliquez sur un lien ou ouvrez un e-mail piégé. Ce simple clic déclenche une action sur votre session authentifiée, par exemple un virement… mais vers un compte contrôlé par l’attaquant. Vous ne voyez rien, vous n’avez rien saisi, et pourtant, la transaction est bien lancée.
C’est le principe même de l’attaque CSRF : exploiter la confiance qu’un site a dans l’utilisateur connecté. Le navigateur, par conception, envoie automatiquement les cookies de session avec chaque requête HTTP, même si celle-ci est déclenchée depuis un autre site web. Le pirate n’a pas besoin de connaître vos identifiants : il utilise votre session légitime contre vous.
Pourquoi les attaques CSRF sont-elles toujours d’actualité ?
Malgré les progrès en cybersécurité, le CSRF reste une attaque fréquente pour plusieurs raisons :
La confiance implicite des navigateurs
Les navigateurs modernes continuent d’envoyer automatiquement les cookies de session avec chaque requête, sans vérifier d’où vient l’appel. Cette fonctionnalité, conçue pour simplifier l’expérience utilisateur, est un terrain idéal pour les attaquants.
Des protections souvent absentes
Beaucoup de sites web, notamment ceux développés sur mesure ou rapidement, n’intègrent pas de protections anti-CSRF par défaut. L’absence de vérification de jetons ou du header Origin rend les applications vulnérables.
L’illusion de sécurité
Certains développeurs pensent à tort qu’une connexion HTTPS, une bonne gestion des mots de passe, ou une authentification forte suffit à protéger contre toutes les attaques. Or, le CSRF exploite les comportements attendus de l’application, plutôt que des failles techniques visibles.
Des actions critiques exposées
Changer un mot de passe, valider un paiement ou supprimer un compte via une simple requête POST ? Si ces actions ne sont pas protégées, elles deviennent des cibles idéales.

Comment se protéger efficacement contre les attaques CSRF ?
1. Les jetons CSRF : la mesure de sécurité essentielle
Le token CSRF (anti-CSRF token) est un identifiant unique, généré côté serveur et associé à la session de l’utilisateur. Il est inséré dans chaque formulaire HTML ou en-tête personnalisé.
- Il doit être impossible à deviner.
- Il ne doit jamais transiter dans l’URL.
- Il doit être vérifié côté serveur à chaque soumission.
💡 Bonnes nouvelles : la plupart des frameworks modernes (Django, Laravel, Symfony, Spring, Express via des middlewares) intègrent cette protection par défaut.
2. Vérifier les headers Referer et Origin
- Le header Referer indique d’où provient la requête. Si l’origine n’est pas votre domaine, vous pouvez la bloquer.
- Le header Origin, plus fiable, est envoyé sur toutes les requêtes POST, PUT ou DELETE. Il est recommandé de le valider côté serveur.
📌 Attention : ces headers peuvent être absents ou modifiés par certains navigateurs ou proxies. Il faut les utiliser en complément, pas seuls.
3. Actions sensibles = double validation
Certaines opérations devraient exiger plus qu’un simple clic :
- Confirmez toute action critique via une fenêtre de confirmation.
- Ajoutez une authentification secondaire ou un reCAPTCHA.
- Ne jamais utiliser de requêtes GET pour modifier l’état (ex. suppression de compte via une URL).
📌 Attention : Cette mesure améliore la sécurité, mais ne suffit pas sans tokens CSRF.
4. En-têtes personnalisés
En ajoutant un header personnalisé à vos requêtes (ex. X-CSRF-Token), vous empêchez leur exécution par des formulaires HTML tiers ou des scripts malveillants, car les navigateurs n’autorisent pas l’envoi de ces headers depuis des domaines extérieurs sans une autorisation explicite via la politique CORS (Cross-Origin Resource Sharing).
5. Formation et hygiène numérique des utilisateurs
Bien que le CSRF cible les applications, les utilisateurs ont aussi un rôle à jouer :
- Fermez vos sessions après utilisation, surtout sur des sites sensibles.
- Évitez d’être connecté à vos comptes sensibles pendant que vous naviguez sur des sites non fiables.
- Utilisez des navigateurs à jour et des extensions de protection.
En conclusion
Les attaques CSRF sont furtives mais très efficaces. Elles ne requièrent ni force brute ni malware, seulement que votre session soit active et que vous cliquiez sur un lien malveillant. C’est cette simplicité même qui les rend si redoutables.
Mais la bonne nouvelle, c’est qu’on sait exactement comment s’en protéger. Les tokens CSRF, la vérification des headers, la confirmation des actions sensibles et les bonnes pratiques de développement forment une barrière robuste.
La cybersécurité n’est pas qu’une affaire de mots de passe et d’antivirus. C’est aussi, et surtout, la maîtrise des logiques applicatives. Protégez vos utilisateurs… même contre eux-mêmes.
Foire Aux Questions (FAQ) sur les Attaques CSRF
Besoin de réponses rapides sur le CSRF ? Cette FAQ condense les informations essentielles pour détecter, prévenir et comprendre ces attaques.
Comment détecter une vulnérabilité CSRF ?
Détecter une vulnérabilité CSRF implique d’analyser la manière dont une application gère les requêtes sensibles. On vérifie si les formulaires critiques (changement de mot de passe, transactions) incluent un jeton anti-CSRF caché (<input type="hidden" name="csrf_token" value="...">
). On s’assure aussi que le serveur valide l’attribut name et la value de ce jeton à chaque soumission. L’absence de ce jeton, une mauvaise implémentation, ou une dépendance exclusive aux en-têtes Referer ou Origin peut indiquer une faille. Des outils d’audit de sécurité automatisés peuvent simuler des attaques pour identifier ces faiblesses.
Quelles sont les bonnes pratiques pour sécuriser une application web contre le CSRF ?
La principale bonne pratique est l’implémentation systématique de jetons CSRF uniques pour toutes les actions modifiant l’état de l’application. Ces informations doivent être générées côté serveur, associées à la session du client, et validées à chaque requête. Utilisez des en-têtes personnalisés (X-CSRF-Token) pour les requêtes AJAX, car les navigateurs n’envoient pas ces types d’en-têtes depuis des origines différentes sans autorisation CORS explicite. Évitez les requêtes GET pour les actions sensibles. Enfin, assurez une validation rigoureuse des inputs pour prévenir les XSS, qui peuvent parfois être utilisés pour faciliter des attaques CSRF via l’exécution de scripts malveillants.
Quels sont les outils disponibles pour se protéger contre les attaques CSRF ?
La plupart des frameworks web modernes (Django, Laravel, Symfony, Spring, Ruby on Rails) intègrent des protections anti-CSRF par défaut, générant et validant automatiquement les jetons. Des bibliothèques spécifiques existent aussi pour les applications sans framework ou avec des besoins particuliers. Pour l’audit, des scanners de vulnérabilité comme OWASP ZAP ou Burp Suite peuvent identifier les formes de requêtes vulnérables au CSRF. La mise en place de politiques de sécurité des contenus (CSP) peut également limiter certains types d’attaques inter-sites.
Exemples concrets d'attaques CSRF
Virement bancaire non autorisé : Un attaquant intègre un formulaire caché sur une page web malveillante qui, une fois cliquée par l’utilisateur connecté à sa banque, déclenche un virement vers un compte frauduleux. Le navigateur envoie les cookies de session, et la banque traite la requête comme légitime.
Changement de mot de passe : Un e-mail de phishing contient un lien. En cliquant dessus, l’utilisateur exécute une requête qui change son mot de passe sur un site populaire, car son cookie de session est toujours actif. L’attaquant n’a qu’à spécifier le nouveau mot de passe via l’attribut name de l’input correspondant.
Suppression de données : Sur un forum, un utilisateur malveillant poste une image piégée. En la visualisant, d’autres utilisateurs connectés déclenchent la suppression de leur propre compte ou de données importantes, car l’URL de l’image est en fait une requête POST dissimulée qui utilise leurs informations de session. C’est une forme discrète d’abus de confiance.
Author
Raja Ben Ali
Raja, pentesteuse chez Intuity, accompagne de grandes entreprises dans le renforcement de leur posture de cybersécurité.