Skip to content

Un endpoint de virement accepte un simple POST authentifié par cookie, sans jeton. Que manque-t-il ?

Réponse courte

Si le navigateur joint automatiquement le cookie de session, une page malveillante peut déclencher le virement au nom de la victime — c'est le Cross-Site Request Forgery (CSRF). Protégez les requêtes qui modifient un état avec des jetons anti-CSRF et des cookies SameSite, et vérifiez l'en-tête Origin/Referer. Le cookie prouve l'identité mais pas l'intention, un CAPTCHA de connexion ne protège pas une action déjà authentifiée, et HTTPS protège la confidentialité du transport, pas la falsification de requête.

Un endpoint de virement qui ne se fie qu'au cookie de session est une cible de manuel pour le Cross-Site Request Forgery (CSRF). Le navigateur joindra obligeamment ce cookie à n'importe quelle requête vers votre domaine — y compris une requête déclenchée par une page totalement étrangère, contrôlée par l'attaquant, que la victime visite par hasard.

Comment fonctionne l'attaque

L'attaquant héberge une page avec un formulaire à envoi automatique (ou une image/un fetch) qui effectue un POST vers votre endpoint de virement, avec le destinataire et le montant de son choix. Lorsqu'une victime authentifiée ouvre cette page, son navigateur envoie la requête avec le cookie de session valide, et votre serveur — voyant une session correctement authentifiée — exécute le virement. La victime n'a jamais cliqué sur « envoyer de l'argent ». Le cookie a prouvé qui elle est, mais jamais qu'elle voulait cette action.

La bonne correction

Les requêtes qui modifient un état exigent une preuve d'intention qu'une page externe ne peut pas fournir :

  • Jetons anti-CSRF (motif synchronizer-token) : une valeur imprévisible, propre à la session, intégrée au formulaire et validée côté serveur. Un attaquant cross-site ne peut pas la lire en raison de la same-origin policy.
  • Cookies SameSite (Lax ou Strict) pour que le cookie de session ne soit tout simplement pas envoyé sur les requêtes cross-site — une base de référence moderne et solide.
  • Vérifiez l'en-tête Origin/Referer sur les requêtes sensibles, en défense en profondeur.

Pourquoi les autres réponses sont fausses

  • « Rien — les cookies authentifient l'utilisateur » confond authentification et autorisation de cette requête précise. C'est exactement la faille qu'exploite le CSRF.
  • Un CAPTCHA sur la page de connexion protège l'événement de connexion ; il ne fait rien une fois l'utilisateur déjà authentifié, lorsque la requête forgée s'appuie sur sa session existante.
  • HTTPS protège les données en transit contre l'écoute et l'altération — il n'empêche pas un site malveillant de faire envoyer par le navigateur de la victime une requête forgée parfaitement valide et chiffrée.

L'examinateur veut voir que vous distinguez identité et intention et que vous optez pour des jetons et SameSite, et non pour la sécurité du transport.

Questions de suivi probables

  • En quoi SameSite=Lax diffère-t-il de Strict, et où chacun laisse-t-il une faille ?
  • Pourquoi le motif synchronizer-token est-il plus robuste que la seule vérification du Referer ?
  • En quoi les défenses CSRF diffèrent-elles entre une session par cookie et une API à jeton Bearer ?

Sources

Recevez 100 questions d'entretien en cybersécurité + réponses

Laissez votre e-mail et nous vous enverrons le pack PDF gratuit et le jeu de flashcards.

Pas de spam. Désabonnez-vous à tout moment.