CSRF
Falsification de requête intersites
Erreur connexe
« Ce serveur est vulnérable à une attaque par une tentative de falsification de requête intersites. Ajoutez à chaque demande un jeton CSRF ou un attribut de cookie SameSite. »
Problème
Une falsification de requête intersites (CSRF) est une attaque qui invite l'utilisateur à envoyer involontairement une demande à une application Web contre laquelle il est authentifié. Les attaques CSRF exploitent la confiance qu'une application web accorde à un utilisateur authentifié.
Elles sont généralement ciblées et ont recours à l'ingénierie sociale, comme par exemple :
Un courrier d’hameçonnage
Un lien de chat
Une fausse alerte
Lorsqu'un utilisateur se connecte à une application web, l'attaquant l'invite à cliquer sur une URL contenant une requête non autorisée pour une application web spécifique. Le navigateur de l'utilisateur envoie alors cette requête malicieusement conçue à une application Web ciblée, notamment les informations de session telles que les cookies de session ou les informations d'identification stockées. Si l'utilisateur est en session active avec une application web ciblée, l'application traitera cette nouvelle requête comme une requête autorisée initiée par l'utilisateur. L'attaquant peut alors exploiter la vulnérabilité CSRF de l'application web.
Le niveau de l'attaque dépend du niveau de privilèges que possède la victime. L'attaque CSRF ne vole pas directement l'identité de l'utilisateur, mais l'exploite pour effectuer des actions sans sa volonté.
Une attaque CSRF réussie force l'utilisateur à effectuer une demande de changement de statut, comme par exemple :
Un changement de mot de passe
Un changement d'adresse e-mail
Une modification ou suppression d'enregistrements
Un transfert de fonds
Des achats
Solution
Pour empêcher une attaque CSRF :
Utilisez des jetons CSRF pour toutes les demandes de changement d'état.
Un jeton CSRF, également connu sous le nom de jeton de synchronisation ou jeton de défi, est une valeur unique et secrète générée côté client pour chaque session utilisateur, ce qui rend impossible le piratage et la tromperie de l'utilisateur.
Utilisez l'attribut de cookie SameSite pour les cookies de session.
Définissez l'attribut SameSite sur les cookies comme une couche supplémentaire de protection avec le jeton CSRF. L'attribut SameSite permet d'envoyer des cookies uniquement si le cookie et la demande proviennent du même domaine (et non d'un autre domaine).
Note
Il se peut que les navigateurs plus anciens ne prennent pas en charge le cookie SameSite.