9
votes

Façons sécurisés pour réinitialiser le mot de passe ou donner un mot de passe ancien

Quel est le moyen le plus sûr de gérer les mots de passe oubliés / mot de passe? Devrais-je envoyer un email au mot de passe à l'utilisateur? Si oui, vous les forcez ensuite à le réinitialiser? Ou les laissez-vous le réinitialiser immédiatement (sans envoyer de courrier électronique) et nécessiter d'autres informations pour vérifier que c'est leur? Ou y a-t-il une meilleure méthode?


2 commentaires

Il y avait une énorme discussion sur ce sujet très récemment: Stackoverflow.com/Questtions/2283937/...


Si votre système a la possibilité de rechercher le mot de passe d'un utilisateur et de lui envoyer un courriel, vous avez fait quelque chose de très faux. Vous ne devriez jamais être capable de rechercher le mot de passe d'un utilisateur. Vous ne devez être capable que de hash un mot de passe entrant et de comparer, ou de le changer et d'envoyer le nouveau mot de passe.


3 Réponses :


0
votes

Je suppose que vous allez le faire par programme? Ou est-ce une question de faute du serveur?

L'une des manières est d'envoyer un lien vers le compte de messagerie de l'utilisateur. Il / elle clique sur le lien et est redirigé vers votre formulaire Web sécurisé où ils réinitialisent le mot de passe.

N'écrivez pas le mot de passe de l'utilisateur


0 commentaires

19
votes

Vous ne pouvez pas envoyer le mot de passe par courrier électronique à l'utilisateur, car vous ne le connaissez pas. Vous avez "haché" il par appliquer quelque chose comme PBKDF2 ou BCRYPT pour le stockage, non?

Si vous réinitialisez le mot de passe sans le confirmer avec le propriétaire du compte, un attaquant peut nier l'accès au propriétaire à son compte, au moins jusqu'à ce qu'il vérifie son email, en utilisant l'adresse électronique de la victime pour demander une réinitialisation.

Une méthode suffisamment sûre pour que de nombreuses applications consiste à envoyer un lien avec le propriétaire du compte, contenant un nombre important et généré aléatoirement. Ce jeton ne devrait être valable que pour un temps limité. Si le propriétaire souhaite réinitialiser leur mot de passe, ils cliquent sur le lien, ce qui les authentifie comme propriétaire du compte. Le propriétaire du compte peut alors spécifier un nouveau mot de passe.


0 commentaires

6
votes

Vous ne devriez pas envoyer de mots de passe par courrier électronique. Voici un processus étape par étape que j'ai utilisé:

  1. Donnez aux utilisateurs une option de mot de passe de réinitialisation.
  2. Cette option enregistre un jeton unique pour un utilisateur. Le jeton finit par expire (heures, jour ou jours).
  3. Un lien est envoyé par courrier électronique à l'utilisateur qui inclut le jeton.
  4. L'utilisateur clique sur le lien envoyé par courrier électronique.
  5. Si le jeton existe et n'est pas expiré , le lien charge un nouveau formulaire de mot de passe. sinon , ne chargez pas le nouveau formulaire de mot de passe.
  6. Une fois que l'utilisateur définit un nouveau mot de passe, supprimez le jeton et envoyez à l'utilisateur un email de confirmation.

    jusqu'à ce que le nouveau mot de passe soit défini, l'ancien mot de passe doit rester actif. N'oubliez pas de hadry et de sel des mots de passe!


0 commentaires