Mot de passe oublié: quelle est la meilleure méthode de la mise en œuvre d'une fonction de mot de passe oublié?

StackOverflow https://stackoverflow.com/questions/522967

Question

Je me demande quelle est la meilleure méthode est de créer une fonction de mot de passe oublié sur un site Web. Je l'ai vu quelques là-bas, voici quelques-unes ou combinaison de:

  • question passphrase / réponse (1 ou plus)
  • envoyez un courriel avec nouveau mot de passe
  • sur l'écran donne nouveau mot de passe
  • confirmation par e-mail: doit cliquer sur le lien pour obtenir nouveau mot de passe
  • Page nécessitant utilisateur d'entrer un nouveau mot de passe

Quelle combinaison ou étapes supplémentaires que vous ajouteriez à une fonction de mot de passe oublié? Je me demande comment ils demandent le nouveau mot de passe et comment ils finissent par l'obtenir.

Je fonctionnant sur le principe que le mot de passe ne peut pas être récupéré; un nouveau mot de passe doit être donné / généré.

Modifier J'aime ce que Cory a dit de ne pas afficher si le nom d'utilisateur existe, mais je me demande ce qu'il faut afficher à la place. Je pense la moitié du problème est que l'utilisateur a oublié quelle adresse e-mail qu'ils ont utilisé, qui affiche une sorte de «n'existe pas » un message est utile. Toute solution?

Était-ce utile?

La solution

  1. Personnellement, j'envoyer un e-mail avec un lien vers une page à court terme qui leur permet de définir un nouveau mot de passe. Faire le nom de la page une sorte de UID.
  2. Si cela ne vous plaît pas, puis de les envoyer un nouveau mot de passe et de les forcer à changer du premier accès serait faire aussi bien.

L'option 1 est beaucoup plus facile.

Autres conseils

Quelques sécurité importantes préoccupations:

  • Une question passphrase / réponse réduit effectivement la sécurité, car il devient généralement le maillon le plus faible dans le processus. Il est souvent plus facile de deviner la réponse de quelqu'un qu'il est un mot de passe -. En particulier si les questions ne sont pas soigneusement choisis
  • En supposant des e-mails fonctionnent comme le nom d'utilisateur dans votre système (qui est généralement recommandé pour diverses raisons), la réponse à une demande de réinitialisation de mot de passe ne doit pas indiquer si un compte valide a été trouvé. Il doit simplement indiquer qu'une demande de mot de passe e-mail a été envoyé à l'adresse indiquée. Pourquoi? Une réponse indiquant qu'un e-mail ne / n'existe pas permet à un pirate de récolter une liste des comptes d'utilisateurs en soumettant plusieurs demandes de mot de passe (généralement via un proxy HTTP comme suite burp) et notant que l'e-mail se trouve. Pour protéger la récolte de connexion, vous devez assurer sans login / auth fonctions connexes fournissent une indication du moment où un e-mail de l'utilisateur valide a été saisie sur un login / pass formulaire remis à zéro.

Pour plus d'arrière-plan, le application Web Hackers Manuel . Il est une excellente lecture sur la création de modèles d'authentification sécurisée.

EDIT : En ce qui concerne la question dans votre édition - je vous suggère:

  

"Un message de demande de mot de passe a été   envoyé à l'adresse que vous avez fourni. Si   un e-mail ne sont pas arrivés peu de temps,   s'il vous plaît vérifier votre dossier spam. Sinon   e-mail arrive, alors aucun compte existe   avec l'e-mail que vous avez fourni. "

Il y a un compromis se fait ici entre la facilité d'utilisation et la sécurité. Vous devez équilibrer cette fonction du contexte - est assez importante sécurité pour vous et vos utilisateurs pour justifier cet inconvénient?

Envoyer email avec un nouveau mot de passe.

Force un changement de mot de passe lors de leur arrivée et entrez le nouveau mot de passe.

Cela garantit que la personne qui voulait le mot de passe sera le seul que pour obtenir le compte.

Si l'e-mail est renifla, quelqu'un pourrait obtenir pour le compte (bien sûr), mais le vrai parti découvrira immédiatement (comme mot de passe que vous venez de les envoyer ne fonctionne pas).

envoyer également la confirmation des changements de mot de passe aux utilisateurs.

Si quelqu'un obtenir le nouveau mot de passe, puis un e-mail en disant « merci pour changer le mot de passe », ils vont être assez perplexe et parleront à un administrateur s'ils ne le font pas.

Utilisation de la vérification email / mot de passe lien de réinitialisation vous donnera une meilleure sécurité. Si vous regardez autour de cela est la façon dont la plupart des sites font et les gens sont assez habitués à cette vérification, donc je vous recommande d'utiliser ce type d'authentification.

Je pense (de gbrandt) Option 2 serait une bonne méthode si elle est associée à des informations personnelles que vous avez déjà pour l'utilisateur. Date de naissance i.e..

Lorsque l'utilisateur demande un nouveau mot de passe (reset) par l'intermédiaire entrant dans son adresse e-mail, il doit également entrer une date de naissance (ou autre chose) avant que le mot de passe est remis à zéro et un nouveau est envoyé par courrier électronique à l'utilisateur.

Seuls ceux qui le connaissent bien peuvent éventuellement l'embêter en réinitialisant son mot de passe! Il ne peut pas être un étranger ou un bot

Sur 5 ou 7 mauvaise adresse email et date de naissance des combinaisons de l'utilisateur est envoyé par courrier électronique que son mot de passe a été demandé d'être remis à zéro et a échoué en raison d'informations d'identification incorrecte. Ensuite, le mot de passe remise à zéro pour ce compte est suspendu pendant 24 heures ou toute période souhaitée.

(si trop d'utilisateurs contacter le WebAdmin sur ce message, il saura que quelqu'un tente d'obtenir malicieusement des informations à partir de votre site / app)

Qu'est-ce que vous en pensez?

Option 1. pas une bonne idée, comme généralement son devient facilement devinables par d'autres. e-mail personnelle de Sarah Palin (Yahoo je pense) a été piraté de cette manière par un tiers.

Les autres options sont meilleures et les messages précédents ont décrit les détails.

L'idée que je pensais était de signer les données dans le lien qui est envoyé à l'utilisateur. Ensuite, lorsque l'utilisateur clique sur le lien et le serveur reçoit l'appel, le serveur reçoit également la partie cryptée et peut valider que les données n'a pas été touché.

Je l'ai mis en place un projet JAVA pour ce cas d'utilisation. Il est sur GitHub, open source. Il répond à votre question parfaitement ... implémenté en Java.

En ce qui concerne la dans l'e-mail -. Elle génère le lien, plus il valide sur l'utilisation

Il y a des explications pour tout (et si quelque chose manque - laissez-moi savoir ...)

Regardez: https://github.com/OhadR/Authentication-Flows

Voir Demo .

Ceci est la web-app client qui utilise les flux auth, avec le README avec toutes les explications. il vous dirige la mise en œuvre: https://github.com/OhadR/ OAuth2-échantillon / arbre / maître / flux d'authentification-

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top