Aller au contenu

Cross-site request forgery (CSRF)

Une attaque CSRF exploite une session ouverte pour une requête non souhaitée. Le cookie de session ne prouve pas à lui seul que l’action était voulue.

Également appeléCSRFXSRF
Sécurité informatique

La cross-site request forgery, ou CSRF, aussi appelée XSRF, est une attaque dans laquelle un autre site pousse le navigateur à envoyer une requête non souhaitée à une application cible. Si le navigateur joint automatiquement des identifiants valides et qu’une protection adaptée manque, l’application peut traiter la requête comme une instruction de la personne connectée.

Une modification dans un portail de projet

Un portail de projet fictif permet de modifier l’adresse de notification dans le champ notificationEmail. Une personne y est connectée et visite aussi une autre page. Cette page tente de déclencher la modification. L’envoi du cookie de session dépend notamment des règles de gestion des cookies du navigateur.

Vérifier un cookie de session valide établit à quelle session la requête est rattachée. Cela ne prouve pas que la personne voulait cette modification d’adresse. L’emploi de POST seul n’empêche pas non plus l’attaque.

Protéger les requêtes qui modifient l’état

Pour un formulaire, le framework peut fournir un jeton CSRF imprévisible lié à la session. Le serveur vérifie cette valeur supplémentaire avant la modification. La protection doit être effectivement utilisée pour les requêtes concernées.

MDN décrit aussi des contrôles fondés sur les métadonnées Fetch, c’est-à-dire les informations du navigateur sur le contexte de la requête, et d’autres méthodes adaptées au type de requête. L’attribut de cookie SameSite ajoute une couche de protection. Un même site et une même origine (protocole, nom d’hôte et port) ne sont pas équivalents ; des sous-domaines différents peuvent appartenir au même site. Un jeton CSRF valide ne remplace pas non plus la vérification du droit de la personne connectée à modifier l’adresse.

Sources