54 votes

Quelle est la meilleure méthode pour "oublier mon mot de passe" ?

Duplicata possible :
Mot de passe oublié : quelle est la meilleure méthode pour mettre en œuvre une fonction de mot de passe oublié ?

Je programme un site web communautaire.

Je veux créer une fonction "mot de passe oublié".

En regardant sur différents sites, j'ai découvert qu'ils utilisent l'une des méthodes suivantes trois options :

  1. envoyer à l'utilisateur un e-mail avec un lien vers une URL unique et cachée qui lui permet de changer son mot de passe (Gmail et Amazon)

  2. envoyer à l'utilisateur un courriel avec un nouveau mot de passe généré de manière aléatoire (Wordpress)

  3. envoyer l'utilisateur son mot de passe actuel (www.teach12.com)

Option n° 3 semble la plus pratique pour l'utilisateur, mais comme j'enregistre les mots de passe sous forme de hachage MD5, je ne vois pas comment l'option 3 serait disponible pour moi puisque MD5 est irréversible . Cela semble également être insécurité car cela signifie que le site Web doit enregistrer le mot de passe en clair quelque part, et qu'au moins le mot de passe en clair est envoyé à l'utilisateur par courrier électronique non sécurisé. Ou est-ce que quelque chose m'échappe ?

Donc si je ne peux pas faire l'option 1, option 2 semble être le le plus simple à programmer puisqu'il me suffit de changer le mot de passe de l'utilisateur et de le lui envoyer. Bien que cela soit plutôt insécure puisque vous devez avoir un mot de passe vivant communiqué par un e-mail non sécurisé. Cependant, les fauteurs de troubles pourraient aussi en abuser pour harceler les utilisateurs en tapant des e-mails au hasard et en changeant constamment les mots de passe des différents utilisateurs.

Option 1 semble être le le plus sûr mais nécessite un peu de programmation supplémentaire pour gérer une URL cachée qui expire, etc., mais il semble que ce soit ce qu'utilisent les grands sites.

Quelle expérience avez-vous de l'utilisation/programmation de ces différentes options ? Y a-t-il des options que j'ai oubliées ?

34voto

Jeff Moser Points 11452

4) Créditer leur compte bancaire de deux montants aléatoires et leur demander de les saisir.
5) Envoyez-leur un nouveau mot de passe par courrier et demandez-leur de le saisir.
6) Demandez-leur d'envoyer un SMS ou d'appeler un certain numéro et d'entrer une certaine valeur dans un numéro de téléphone avec le téléphone portable qu'ils ont enregistré dans le fichier.
7) S'affranchir complètement du problème de la gestion des mots de passe en la confiant à des fournisseurs OpenID, comme commencent à le faire Stack Overflow, Facebook, les moteurs de blogs et d'autres.

En dehors de ces cas, utilisez l'option 1 ou 2 avec la caractéristique supplémentaire que les deux expirent dans une heure.

9voto

Cory House Points 5014

Je suis choqué par les votes positifs sur les réponses décrivant les réponses #1 et #2 comme équivalentes. Ils ne le sont pas du tout. Envoyer à l'utilisateur un lien à court terme pour changer son mot de passe est l'approche la plus pratique, la plus couramment utilisée et la plus sûre qui n'implique pas une interaction hors bande (courrier, SMS, etc.). Quelques raisons :

  1. La définition d'un mot de passe temporaire via un lien vers un mot de passe oublié permet aux utilisateurs de modifier efficacement le mot de passe d'un utilisateur et de verrouiller l'accès à son compte s'ils connaissent son identifiant. Avec un lien, l'utilisateur sait simplement que quelqu'un s'amuse et son accès n'est pas affecté.
  2. Le lien de réinitialisation du mot de passe n'est valable que pendant une courte période, ce qui laisse peu de temps à un attaquant pour frapper. Et même s'il le faisait, l'utilisateur le saurait car le lien de réinitialisation ne fonctionnerait plus si l'attaquant l'interceptait et l'utilisait pour changer le mot de passe. Si le nouveau mot de passe attribué n'est pas changé immédiatement par l'utilisateur, l'attaquant qui a intercepté le mot de passe peut tranquillement se faire passer pour l'utilisateur indéfiniment. . La grande différence est donc que, si un pirate peut intercepter l'e-mail contenant le lien de réinitialisation du mot de passe, s'ils utilisent le lien pour changer le mot de passe de l'utilisateur, ce dernier saura que quelque chose ne va pas. car le lien ne fonctionnera pas et ils généreront une autre demande de réinitialisation de mot de passe.
  3. Plus facile à utiliser - l'utilisateur clique simplement sur un lien dans son courrier électronique au lieu de taper un nouveau mot de passe aléatoire que vous avez généré.

De plus, les questions de sécurité rendent souvent un site moins sûr, et non pas plus. Elles constituent un autre vecteur d'attaque et souvent le maillon le plus faible. Je vous recommande vivement de lire Le manuel du hacker d'applications Web pour une excellente discussion sur ce sujet.

8voto

Martin Geisler Points 44779

Notez que l'option n° 2 vous oblige également à garder la trace de l'ancien mot de passe et à faire expirer le nouveau mot de passe aléatoire s'il n'est pas utilisé dans un délai de 24 heures, par exemple.

Sinon, je pourrais vous ennuyer en vous envoyant à plusieurs reprises un nouveau mot de passe aléatoire. Si vous n'êtes pas près de votre courrier électronique, vous pourriez ne pas savoir pourquoi vous ne pouvez pas vous connecter avec votre mot de passe normal.

Aussi, s'il vous plaît éviter nécessitant une "question d'identification". Les réponses à ces questions sont généralement beaucoup plus faciles à deviner ou à consulter que les mots de passe réels, de sorte que tout le monde peut s'identifier à moi. Voir le Sarah Palin pour un exemple récent de l'insécurité de ce système.

6voto

Oli Points 65050

Les options 1 et 2 sont aussi peu sûres l'une que l'autre.

Voilà. Je l'ai dit. Si le compte de messagerie de l'utilisateur a été violé, il n'y a pas de moyen raisonnablement sûr de faire les choses, à moins de recueillir des données plus privées comme son adresse, le nom de jeune fille de sa mère - qui peuvent toutes être devinées.

La meilleure version (bien que la plus ennuyeuse) que j'ai vue est celle où vous devez vous souvenir d'une question secrète. et une réponse secrète. Cela signifie que l'utilisateur doit se rappeler quelle question il a posée, ce qui, bien sûr, peut toujours être oublié aussi !

S'ils oublient la question et que vous êtes une "vraie" entreprise, il y a toujours la possibilité d'envoyer à l'utilisateur un jeton par la poste, avec des instructions sur la façon de réinitialiser toutes ses sécurités... Il est très peu probable qu'un pirate ait accès à leur courrier dans la vie réelle.

Une variante serait de collecter un numéro de téléphone lorsque l'utilisateur a créé son compte. Si ce numéro existe et que l'utilisateur ne se souvient d'aucune de ses coordonnées, vous pourriez mettre en place une sorte de système d'appel automatique qui lui indiquerait comment réinitialiser ses coordonnées.

Et une chose à mentionner à propos du point 2 : ne laissez pas le processus écraser le mot de passe du compte actuel. Si cela se produisait, n'importe qui pourrait dire qu'il a oublié le mot de passe d'un compte, ce qui déclencherait de nombreux changements de mot de passe non désirés.

4voto

Cade Roux Points 53870

Il n'y a pas de réelle différence entre la sécurité de l'option 1 ou 2. L'option 1 revient effectivement à précharger le nouveau mot de passe dans le formulaire.

En fait, compte tenu de la prévalence des attaques par hameçonnage, on pourrait arguer que le fait d'encourager l'utilisation de l'option 1 avec les URL longues pourrait rendre les gens moins vigilants lorsqu'ils cliquent sur des URL longues et mystérieuses.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X