web-dev-qa-db-fra.com

Copie de l'adresse e-mail sur une page de mot de passe oublié

Je suis responsable d'un site Web et je remets en question la logique de certaines politiques "standard de l'industrie" auxquelles on m'a demandé de me conformer.

Lorsqu'un utilisateur se connecte au site Web, il reçoit un message lui indiquant que les informations de connexion sont incorrectes, mais nous ne précisons pas si c'est le nom d'utilisateur ou le mot de passe qui est incorrect.

Si l'utilisateur se rend compte ensuite qu'il a oublié son mot de passe (aurait dû utiliser un gestionnaire de mots de passe), il peut cliquer sur le lien mot de passe oublié et entrer son adresse e-mail et appuyer sur Entrée. Un message leur indique ensuite que s'ils ont un compte, le compte a été verrouillé et qu'un e-mail de réinitialisation du mot de passe a été envoyé à leur compte de messagerie.

Jusqu'à présent, il n'y a aucune fuite d'informations sur les informations d'identification incorrectes ou sur l'existence d'un compte pour l'e-mail fourni.

Pour améliorer l'expérience de l'utilisateur, j'ai suggéré que si l'utilisateur clique sur le lien de mot de passe oublié, s'il est disponible dans le champ de connexion, nous devrions copier l'adresse e-mail dans le champ d'adresse e-mail de la page de mot de passe oublié.

Cependant, on m'a dit que c'était contraire aux "normes de l'industrie", même si personne ne pouvait me montrer quoi que ce soit à l'appui!

Je comprends que l'ajouter simplement à l'URL serait mauvais, car cela permettrait aux gens de parcourir les adresses e-mail et de verrouiller les comptes des gens, causant des inconvénients aux utilisateurs.

Quelle vulnérabilité de sécurité, le cas échéant, rendrait cette mauvaise pratique?

Modifier:

Une mise à jour pour tout nouveau lecteur.

Il y a eu d'excellentes réponses ici et je suis reconnaissant pour toutes les contributions.

Le processus comportait une faille dans le verrouillage du mot de passe oublié et cela sera modifié. Le message lorsqu'un compte verrouillé donne toujours le email address or password incorrect message, afin que l'utilisateur ne sache pas que l'adresse e-mail est valide.

43
Karl Gjertsen

Aucun en tant que tel
Le changement que vous proposez ne semble être qu'un changement d'expérience utilisateur. Oui, quelqu'un peut dire que cela rendra plus convivial pour les utilisateurs malveillants le verrouillage des utilisateurs normaux du système, mais ce n'est pas à vous.
Le plus gros problème pour vous est votre politique de verrouillage du compte de l'utilisateur lorsqu'il clique sur le mot de passe oublié. Il est très facile pour un utilisateur malveillant de vous bloquer sur votre compte. Ils n'ont qu'à aller au mot de passe oublié -> Entrez l'identifiant de messagerie valide -> Appuyez sur le bouton de réinitialisation.

57
Limit

Il n'y a pas de problème majeur ici, bien que je m'assure que la mise en cache est désactivée afin que toute personne visitant la page dans le même navigateur n'ait pas accès à l'adresse e-mail lors du chargement de la page Mot de passe oublié.

Recommandations d'en-tête d'ici . Notez que tandis que pragma est en spécifiant un en-tête de demande dans HTTP 1.0, de nombreux navigateurs et serveurs proxy l'interpréteraient toujours s'ils étaient fournis dans une réponse.

Cache-Control: private, no-cache, no-store, max-age=0, no-transform
Pragma: no-cache
Expires: 0

Vous devez également atténuer les fuites et le stockage de référents interdomaines dans l'historique du navigateur en POSTANT la redirection vers la page Mot de passe oublié.

Autres commentaires sur votre approche générale

Un message leur indique ensuite que s'ils ont un compte, le compte a été verrouillé et qu'un e-mail de réinitialisation du mot de passe a été envoyé à leur compte de messagerie.

Le verrouillage du compte peut être effectué comme une attaque par déni de service contre un utilisateur particulier. Si je sais que [email protected] possède un compte sur votre système et que je souhaite lui refuser le service, je pourrais demander à plusieurs reprises une réinitialisation du mot de passe pour ce compte afin de le verrouiller.

Lorsqu'un utilisateur se connecte au site Web, il reçoit un message lui indiquant que les informations de connexion sont incorrectes, mais nous ne précisons pas si c'est le nom d'utilisateur ou le mot de passe qui est incorrect.

Que montrez-vous si le compte est verrouillé?

Si vous dites que leur nom d'utilisateur et leur mot de passe sont incorrects, l'utilisateur peut être confus s'ils sont en fait verrouillés (selon mon explication DoS ci-dessus).

Cependant, si vous dites que leur compte est verrouillé, le faites-vous également pour les comptes inexistants? Je demande parce que sinon, en tant qu'attaquant, je pourrais tenter une réinitialisation du mot de passe, puis essayer immédiatement de me connecter en tant que même utilisateur. Si je reçois alors un message me disant que le compte est verrouillé, j'ai alors découvert un compte valide (cela est classé comme une vulnérabilité énumération des utilisateurs ).

Par conséquent, vous pouvez également souhaiter que votre logique semble verrouiller des comptes inexistants en cas de tentative de réinitialisation du mot de passe. Vous voudrez peut-être apparaître pour les déverrouiller après une période de temps aléatoire, sinon un attaquant pourrait déduire qu'un compte verrouillé en permanence est un compte qui n'existe pas car il n'a jamais été déverrouillé.

15
SilverlightFox

Je ne vois aucun "standard de l'industrie" que vous avez enfreint lors de la copie des noms d'utilisateur sur la page de mot de passe oublié.

Pour autant que je le vois, tant que vous affichez le même message pour un nom d'utilisateur valide et invalide (adresse e-mail), lorsque celui-ci est soumis à la fonction de mot de passe oublié, ça devrait aller.

C'EST À DIRE. Indépendamment d'une adresse e-mail valide ou invalide, l'utilisateur recevra un message du type: "Merci! Si un compte a été créé avec l'adresse e-mail fournie, un e-mail lui sera envoyé adresse, avec des instructions pour réinitialiser votre mot de passe. "

La seule façon dont je peux voir un problème serait, si le champ de nom d'utilisateur est activé avec la saisie automatique. Évidemment, si l'utilisateur se trouve sur un ordinateur partagé, il court le risque que son nom d'utilisateur (adresse e-mail) soit potentiellement divulgué à un attaquant, mais tout dépend du type de site Web dont il est question ici.

11
James

Mis à part les failles de sécurité potentielles, cela repose sur l'hypothèse que le client avait raison de penser qu'il avait la bonne adresse e-mail et que seul le mot de passe était incorrect.

Un client qui saisit mal son adresse e-mail et ne le remarque pas immédiatement frappera réinitialiser le mot de passe, l'adresse e-mail sera remplie automatiquement et il cliquera sur `` réinitialiser le mot de passe '' sans vérifier à nouveau l'adresse e-mail saisie automatiquement. Une faute de frappe dans le champ e-mail peut ne pas être remarquée, et l'utilisateur est susceptible de supposer que le mot de passe est la chose qui ne va pas si l'adresse e-mail semble correcte d'un coup d'œil.

Ils attendront ensuite un certain temps pour une réinitialisation du mot de passe qui n'arrivera jamais, car elle est allée à [email protected]

Leur prochaine étape sera, selon la nature de votre entreprise, d'appeler le service client, de trouver un concurrent avec le même produit, etc. Aucun des champs remplis ici ne vous convient.

4
Scott

En sélectionnant l'option de mot de passe oublié et en supposant que l'ID de connexion est une adresse e-mail (plutôt qu'un nom d'utilisateur comme certains sites utilisent), je pense que c'est une excellente idée de placer l'adresse e-mail dans le champ Adresse e-mail.

Ce n'est pas un problème de sécurité à mon avis. Il devrait vous obliger à faire une demande côté serveur lorsque l'utilisateur sélectionne le lien de mot de passe oublié. Alors pourquoi ne pas avoir le composant d'interface utilisateur de mot de passe oublié déjà préchargé à certains égards comme une application d'une seule page? Alors, sélectionnez le lien mot de passe oublié, puis affichez la vue mot de passe oublié?

Je ne suis pas au courant d'une norme de l'industrie que vous avez enfreinte.

En général, vous suivez le processus correct. Vous avez raison si un utilisateur entre des informations d'identification, vous répondez avec des informations d'identification non valides et ne donnez aucune autre information.

Lors de la sélection des "vues" de changement de mot de passe oublié, remplissez l'adresse e-mail et autorisez l'utilisateur à sélectionner envoyer, la réponse du serveur est "Un mot de passe oublié a été envoyé".

Si vous devez faire une demande côté serveur pour obtenir la page Mot de passe oublié, vous avez correctement identifié que les paramètres ne doivent pas être contenus dans la demande GET, la raison en est que les journaux côté serveur stockeront les paramètres de chaîne de requête, et selon votre infrastructure et vos utilisateurs administrateurs, vous pouvez autoriser ou non ces utilisateurs administrateurs à connaître ces comptes.

2
Darragh

La copie de l'adresse e-mail déjà entrée dans la page de connexion vers la page de réinitialisation du mot de passe est pas une faille de sécurité.

La seule différence est de savoir si l'utilisateur doit retaper l'adresse qu'il connaît (ou a volé) dans la zone de mot de passe oublié pour réinitialiser. Ils ont déjà cette information. Aucune donnée inconnue de l'utilisateur n'est divulguée en copiant les données fournies par l'utilisateur de la connexion à l'écran de réinitialisation. L'e-mail n'est pas visiblement confirmé et rien dans le processus de réinitialisation n'est modifié. Littéralement, la seule différence est que l'utilisateur n'a pas besoin de taper l'adresse e-mail deux fois.

Puisqu'ils connaissent leur propre e-mail, ou l'e-mail volé, cela ne révèle rien. C'est l'équivalent de le copier-coller.

2
RDragonrydr