D'après ce que j'ai appris jusqu'à présent, le but des jetons est d'empêcher un attaquant de falsifier une soumission de formulaire.
Par exemple, si un site Web avait un formulaire qui saisissait des articles ajoutés à votre panier, et qu'un attaquant pourrait spammer votre panier avec des articles que vous ne voulez pas.
Cela a du sens car il pourrait y avoir plusieurs entrées valides pour le formulaire de panier, tout ce que l'attaquant aurait à faire est de connaître un article que le site Web vend.
Je comprends comment les jetons fonctionnent et ajoutent de la sécurité dans ce cas, car ils garantissent que l'utilisateur a effectivement rempli et appuyé sur le bouton «Soumettre» du formulaire pour chaque article ajouté au panier.
Cependant, les jetons ajoutent-ils une sécurité à un formulaire de connexion utilisateur, qui nécessite un nom d'utilisateur et un mot de passe?
Étant donné que le nom d'utilisateur et le mot de passe sont très uniques, l'attaquant devrait connaître les deux pour que la falsification de connexion fonctionne (même si vous n'avez pas configuré de jetons), et si un attaquant le savait déjà, il pourrait simplement se connecter au site Web. lui-même. Sans oublier qu'une attaque CSRF qui oblige l'utilisateur à se connecter n'aurait de toute façon aucun but pratique.
Ma compréhension des attaques CSRF et des jetons est-elle correcte? Et sont-ils inutiles pour les formulaires de connexion des utilisateurs comme je le soupçonne?
Réponses:
Oui. En général, vous devez sécuriser vos formulaires de connexion contre les attaques CSRF comme tout autre.
Sinon, votre site est vulnérable à une sorte d'attaque de "phishing de domaine de confiance". En bref, une page de connexion vulnérable au CSRF permet à un attaquant de partager un compte utilisateur avec la victime.
La vulnérabilité se déroule comme ceci:
Comme exemple pertinent, considérons YouTube . YouTube a permis aux utilisateurs de voir un enregistrement de "leur propre" historique de visionnage, et leur formulaire de connexion était vulnérable au CSRF! Ainsi, un attaquant pouvait créer un compte avec un mot de passe qu'il connaissait, connecter la victime à YouTube à l'aide de ce compte - traquant les vidéos que la victime regardait.
Il y a une discussion dans ce fil de commentaires qui implique qu'il ne pourrait "que" être utilisé pour de telles violations de la vie privée. Peut-être, mais pour citer la section de l'article CSRF de Wikipedia :
Accent mis sur les «attaques nouvelles». Imaginez l'impact d'une attaque de phishing contre vos utilisateurs, puis imaginez cette attaque de phishing fonctionnant via le propre signet de confiance de l'utilisateur vers votre site! L'article lié dans le fil de commentaires susmentionné donne plusieurs exemples qui vont au-delà de simples attaques contre la confidentialité.
la source
http://good.com/login.html
dans un client, analyser le jeton CSRF imbriqué, puis publierhttp://bad.com/login.html
qui contient un formulaire modifié qui soumet son nom d'utilisateur, son mot de passe et son jeton indépendamment de ce que la victime tape. CORS ne s'applique pas parce que vous ' J'ai deux clients distincts: l'attaquant et la victime. Donc, pour réitérer la question: la protection CSRF fonctionne-t-elle vraiment pour les formulaires de connexion?Votre compréhension est correcte - tout l'intérêt de CSRF est que l'attaquant peut forger une demande d'apparence légitime à l'avance. Mais cela ne peut pas être fait avec un formulaire de connexion à moins que l'attaquant ne connaisse le nom d'utilisateur et le mot de passe de la victime, auquel cas il existe des moyens plus efficaces d'attaquer (connectez-vous vous-même).
En fin de compte, la seule chose qu'un attaquant peut faire est de gêner vos utilisateurs en envoyant du spam aux échecs de connexion, lorsque le système de sécurité peut verrouiller l'utilisateur pendant un certain temps.
la source
Oui , donc les autres sites Web ne peuvent pas imiter votre formulaire de connexion! Aussi simple que cela.
Que peuvent-ils réaliser en le faisant?
n
no. de temps, peut être évité.la source
La validation CSRF avant la connexion n'a pas trop de sens à mon humble avis.
Merci à @squiddle pour le lien: seclab.stanford.edu/websec/csrf/csrf.pdf , on peut lire sur la toute première page:
Si vous tentez de valider la CSRF avant la connexion, vous donnez à un attaquant potentiel la possibilité de récupérer un code valide de votre site Web! Il / elle serait alors en mesure de republier le jeton en échouant à l'objectif.
Peut-être qu'un attaquant peut alors essayer de deviner un nom d'utilisateur de votre site. Ce que j'ai fait, si l'adresse IP essaie de deviner 10 noms d'utilisateur sans succès, je la liste simplement en noir.
la source