Sobes.tech
Junior

Qu'est-ce que le CSRF?

sobes.tech IA

Réponse de l'IA

CSRF (Cross-Site Request Forgery) — est un type d'attaque dans lequel un attaquant oblige un utilisateur à effectuer des actions indésirables sur un site web où il est déjà authentifié.

L'attaque repose sur le fait qu'un site malveillant ou un email contient une requête que le navigateur de l'utilisateur envoie automatiquement au site cible. Si l'utilisateur est connecté au site cible, son navigateur enverra les cookies, et la requête sera exécutée avec ses droits.

Par exemple, cela peut être une requête pour changer le mot de passe, transférer de l'argent ou supprimer un compte.

Pour se protéger contre CSRF, différentes méthodes sont utilisées :

  • Tokens CSRF : Tokens secrets et uniques pour chaque requête, générés par le serveur et envoyés avec chaque formulaire ou requête AJAX. Le serveur vérifie la correspondance du token reçu.
  • Attribut cookie SameSite : Définit une règle selon laquelle les cookies ne sont envoyés au serveur que pour les requêtes du même domaine où ils ont été définis.
  • Vérification des en-têtes Origin et Referer : Le serveur vérifie d'où provient la requête. Cependant, ces en-têtes peuvent être modifiés par un attaquant ou ne pas être présents dans certains cas.
  • Exiger une ré-authentification pour les actions critiques : Demander le mot de passe avant d'effectuer des opérations importantes.

La méthode la plus efficace et courante est l'utilisation de tokens CSRF.

// Exemple d'ajout d'un token CSRF dans un formulaire
<form action="/transfer" method="POST">
  <input type="hidden" name="_csrf_token" value="token_généré_par_le_serveur">
  <input type="number" name="amount">
  <button type="submit">Transférer</button>
</form>
// Exemple de vérification du token CSRF sur le serveur (Node.js avec Express)
app.post('/transfer', csrfProtection, (req, res) => {
  // Traitement de la requête après vérification réussie du token
});