web-dev-qa-db-fra.com

Comment gérer le "mot de passe oublié" lorsque l'utilisateur n'a pas confirmé son adresse e-mail?

Si vous suivez le modèle d'autoriser les utilisateurs à accéder à votre application sans avoir confirmé un e-mail (généralement considéré comme une bonne UX), comment gérer le cas où ils ont oublié leur mot de passe? Très important dans ce cas particulier car le site contient des informations personnelles sur la santé.

De toute évidence, leur envoyer un e-mail avec des instructions pour le réinitialiser n'est pas approprié, car leur e-mail n'est pas encore vérifié. J'ai proposé quatre solutions, mais comme aucune d'entre elles.

  1. Geler un utilisateur après, disons, 1 semaine s'il n'a pas confirmé son e-mail. Ensuite, pendant cette période de grâce d'une semaine, ils ne peuvent pas récupérer leur e-mail. (Un peu problématique, car il s'agit d'un problème de sécurité pour révéler si une adresse e-mail est enregistrée lors d'un mot de passe oublié.

  2. Ajoutez "question de sécurité" à l'inscription. Mauvais pour des raisons assez évidentes.

  3. Ne les laissez pas utiliser le site sans avoir confirmé leur adresse e-mail. Aussi mauvais.

  4. Laissez-les simplement récupérer leur mot de passe même sans e-mail confirmé, mais ajoutez du texte dans le site "si vous n'avez pas confirmé votre e-mail, quelqu'un pourrait avoir accès à vos informations de santé privées." Cela s'afficherait dans une bannière en haut de l'écran jusqu'à ce qu'ils s'inscrivent et aurait la possibilité de renvoyer l'e-mail à l'adresse e-mail de leur choix. Cela pourrait être le pire cas de sécurité de tous.

Des idées?

24
cminu

Ne demandez pas de mot de passe tant que l'adresse e-mail n'a pas été confirmée.

Le problème est parti!

Utilisez le processus d'engagement progressif et démarrez-le en ne demandant que l'adresse e-mail.

En attendant, invitez-les à parcourir le site ou à parcourir quelques informations d'introduction, mais ne leur laissez rien faire en matière de sécurité tant que l'e-mail n'a pas été confirmé.

Donnez-leur la possibilité d'afficher ou de modifier l'adresse e-mail ou de renvoyer l'e-mail de confirmation si nécessaire (par exemple, il ne s'affiche pas pour une raison quelconque).

Voici le formulaire d'inscription de Gravatar

enter image description here

Edit: Gravatar me dit que le plus gros inconvénient de ce mécanisme est la récupération de compte pour les personnes qui ont par la suite perdu l'accès à une adresse e-mail et qui n'ont pas pris la peine de enregistrer une autre adresse e-mail qui les aiderait à s'identifier.

14
Roger Attrill

Je pense que vous pouvez essayer de renvoyer l'e-mail de confirmation en cas de mot de passe oublié. Ainsi, l'utilisateur obtiendra une nouvelle confirmation sur l'ancien e-mail (spécifié à l'étape d'enregistrement) et après confirmation, il pourra réinitialiser le mot de passe en utilisant la procédure standard.

Et vous pouvez également limiter les fonctionnalités (laisser les utilisateurs lire mais pas les laisser écrire, etc.) jusqu'à confirmation. Cela motivera les utilisateurs à confirmer rapidement leurs e-mails et à s'assurer que les e-mails ont été saisis correctement, etc.

1
alexeypegov

Si votre site possède d'autres fonctionnalités, laissez un utilisateur connecté accéder à ces fonctionnalités sans e-mail confirmé. Mais dès qu'ils veulent créer un lien vers des informations confidentielles, ils ont besoin d'un e-mail confirmé.

1
jackslash

La réponse simple est que vous ne devez pas autoriser la réinitialisation du mot de passe (de quelque manière que ce soit) si l'adresse e-mail n'a pas été confirmée et que vous vous souciez de la sécurité.

Les questions secrètes ne sont qu'une autre version beaucoup moins sûre d'un mot de passe et nuisent considérablement à la sécurité.

La seule vraie option pour renvoyer une confirmation par e-mail. Cependant, vous ne devez laisser personne se connecter à un compte à moins que l'e-mail ne soit confirmé. Si vous faites cela, vous n'aurez pas ce problème en premier lieu.

1
JohnGB

Aussi mauvais que cela puisse paraître, 3 est la seule option raisonnable, surtout si des informations personnelles sont impliquées. Si l'utilisateur ne comprend pas l'importance de cela, il va peut-être copier et coller son dossier de santé sur son compte Facebook, vous pouvez donc le garder de toute façon ...

J'obtiens la boîte aux lettres fourre-tout pour mon domaine enregistré, c'est-à-dire la boîte aux lettres où chaque courrier est envoyé lorsque le nom de la boîte aux lettres ou un alias pour celui-ci n'existe pas. Régulièrement, j'y reçois exactement ces mails: Vous vous êtes inscrit à notre service, veuillez confirmer. Il semble que ce soient les mêmes 2 ou 3 utilisateurs qui souhaitent s'inscrire à certains sites de jeux en utilisant une fausse adresse e-mail, en choisissant mon domaine pour cela.

Bien sûr, je ne confirme jamais. S'ils veulent faire quelque chose d'illégal, le service aurait mon adresse e-mail confirmée liée à mon domaine. S'ils veulent jouer là-bas, ils peuvent le faire sous leur propre adresse. Et c'est une autre raison pour ne pas permettre à l'utilisateur de faire quoi que ce soit: pour protéger les propriétaires innocents des adresses e-mail. Si je n'obtenais pas le fourre-tout, je ne serais même pas au courant.

Si je serais malveillant, je pourrais simplement essayer de réinitialiser leur mot de passe, en entrant dans leur compte. Il y a une dizaine d'années, j'avais un e-mail où le service ne nécessitait pas de confirmation, mais à la place, j'ai envoyé le nom du compte avec le mot de passe initial choisi par l'utilisateur en texte brut comme confirmation d'inscription ...

1
Secure

C'est plus une question que j'ai dans mon esprit (contenant une réponse à toutes les autres réponses parlant de sécurité), que j'ajoute à la liste de réponses ... et j'ajoute à la complexité de la question déjà posée.

Il y a tellement de façons dont nous sommes passés en revue ici ... mais chacun a un flux, laissez la revue:

  1. Je ne permettrai pas à l'utilisateur d'oublier le mot de passe.
    • Le compte avec mot de passe oublié est perdu dans l'espace avec tout ce qu'il a posté
  2. J'envoie une confirmation par e-mail au début (après l'inscription).
    • Le système peut ne pas envoyer cet e-mail
    • L'utilisateur peut ignorer notre site Web pour le début et revenir lorsque l'e-mail est perdu
  3. J'envoie une confirmation par e-mail au début, mais je renvoie une autre confirmation si l'utilisateur a perdu l'e-mail de confirmation (qui, naturellement, les jetons ont des limites de temps et par défaut, ils expirent à cette date)
    • si l'utilisateur (pirate) a accès à une adresse e-mail pour réinitialiser le mot de passe oublié, alors il devrait également avoir accès pour le confirmer, pourquoi s'en soucier?
  4. Si vous voulez autoriser l'achèvement progressif du profil?
    • C'est plus comme si vous créez un réseau social et que vous souhaitez interdire les utilisateurs interdits, ou plus de cas similaires, et certains cas spéciaux, sinon votre utilisateur a principalement besoin d'accéder immédiatement aux fonctionnalités principales lors de son inscription.
  5. Question de sécurité?
    • Tout le monde dit que c'est mauvais ... je n'ai pas vraiment la moindre idée logique, mais la plupart du temps les gens avec de mauvaises intentions sont proches de vous ...

Et ... beaucoup d'autres cas qui peuvent "heurter le mur" (échoue), Donc, soit le compte de perte d'utilisateur et plus tard, ils doivent utiliser un e-mail secondaire, dont ils ne se souviendront pas la prochaine fois ... (La plupart les clients ne sont pas aussi intelligents que nous) (ils le sont mais ils ne veulent pas essayer ou apprendre), parce que leur e-mail principal est bloqué avec un compte oublié par mot de passe, ou la sécurité sera faible, ou nous devons supprimer le compte et recréer des données entières, ou forcer l'utilisateur à utiliser la confirmation par e-mail (qu'il peut laisser) à chaque tentative de connexion ou réinitialiser le mot de passe, etc. ...

Nous avons tellement de solutions qui ont leurs hauts et leurs bas.

Alors quelle est la meilleure solution? Commentez s'il vous plait ...

je veux aussi connaître vos choix

Mise à jour

BTW, il y a un autre cas d'information à considérer ....

Si l'utilisateur oublie son mot de passe:

  1. L'utilisateur confirme automatiquement que l'adresse e-mail est sa propre adresse e-mail, lorsqu'il demande le "Réinitialiser le lien de mot de passe", car il ne peut activer le lien de réinitialisation du mot de passe que par son e-mail, et il n'obtiendra pas la clé autrement, et comme J'ai dit avant que si le courrier ou le serveur de messagerie étaient compromis, alors c'était fini pour lui de toute façon.
0
deadManN

Je veux juste vérifier que je comprends la situation qui vous inquiète:

  1. Ils se sont inscrits sur le site et ont fourni une adresse e-mail.
  2. Le système a envoyé un e-mail à cette adresse, leur demandant de cliquer sur un lien.
  3. Ils n'ont pas cliqué sur le lien.
  4. Plus tard, ils veulent accéder au site mais ils ont oublié le mot de passe.

Maintenant, vous dites:

De toute évidence, leur envoyer un e-mail avec des instructions pour le réinitialiser n'est pas approprié, car leur e-mail n'est pas encore vérifié.

Je ne suis pas si sûr. Soit: 1. Ils n'ont pas saisi correctement leur e-mail, et ni l'e-mail de confirmation, ni la réinitialisation du mot de passe ne parviendront à la bonne personne; ou 2. Ils l'ont tapé correctement, et probablement l'e-mail de confirmation l'a fait, tout comme un e-mail de réinitialisation de mot de passe.

Il semble que vous craigniez que le fait qu'ils n'aient pas cliqué sur le bouton de confirmation précédemment est en quelque sorte une faiblesse de sécurité en soi?

Dans le cas 1, ils sont bloqués. Ils ne nous ont jamais fourni d'informations nous permettant de les vérifier. Si des informations personnelles sur la santé sont en jeu, je ne pense pas que vous puissiez sacrifier la sécurité pour une "bonne UX".

Dans le cas 2, fournissez une option pour renvoyer l'e-mail de confirmation. Vous leur demandez peut-être de vous communiquer à nouveau leur adresse e-mail (si ce n'est pas leur identifiant).

0
Steve Bennett