53 votes

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

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

  • question / réponse sur la phrase d'authentification (1 ou plus)
  • envoyer un email avec le nouveau mot de passe
  • sur l'écran donnez le nouveau mot de passe
  • confirmation par e-mail : il faut cliquer sur le lien pour obtenir le nouveau mot de passe.
  • page demandant à l'utilisateur d'entrer un nouveau mot de passe

Quelle combinaison ou étape supplémentaire ajouteriez-vous à une fonction de mot de passe oublié ? Je m'interroge sur la façon dont ils demandent le nouveau mot de passe et sur la façon dont ils finissent par l'obtenir.

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

Modifier J'aime ce que Cory a dit à propos de ne pas afficher si le nom d'utilisateur existe, mais je me demande ce qu'il faut afficher à la place. Je pense que la moitié du problème est que l'utilisateur a oublié l'adresse e-mail qu'il a utilisée, ce qui rend utile l'affichage d'une sorte de message "n'existe pas". Des solutions ?

49voto

Gregor Brandt Points 5645
  1. Personnellement, j'enverrais un courriel avec un lien vers une page à court terme qui leur permet de définir un nouveau mot de passe. Faites en sorte que le nom de la page soit une sorte d'UID.
  2. Si cela ne vous convient pas, vous pouvez leur envoyer un nouveau mot de passe et les obliger à le changer lors du premier accès.

L'option 1 est beaucoup plus facile.

17 votes

L'option 1 présente également l'avantage de ne pas être sensible aux attaques DoS sur l'utilisateur. Par exemple, quelqu'un clique constamment sur le lien "réinitialiser le mot de passe" dans l'option 2, de sorte que l'utilisateur est effectivement verrouillé de son compte. Vous pouvez vous prémunir contre ce risque, mais à quoi bon ? L'option 1 est la meilleure solution...

0 votes

+1 pour le rare exemple de conseils de sécurité simples et judicieux. Bon travail.

0 votes

Y a-t-il une raison pour que l'utilisateur ne soit pas connecté une fois qu'il a défini un nouveau mot de passe ?

25voto

Cory House Points 5014

Quelques problèmes de sécurité importants :

  • Une question/réponse avec phrase de passe diminue en fait la sécurité, car elle devient généralement le maillon le plus faible du processus. Il est souvent plus facile de deviner la réponse d'une personne qu'un mot de passe, surtout si les questions ne sont pas choisies avec soin.
  • En supposant que les emails fonctionnent comme nom d'utilisateur dans votre système (ce qui est généralement recommandé pour diverses raisons), la réponse à une demande de réinitialisation de mot de passe ne devrait pas indiquer si un compte valide a été trouvé. Elle devrait simplement indiquer qu'un courriel de demande de mot de passe a été envoyé à l'adresse fournie. Pourquoi ? Une réponse indiquant qu'un courriel existe ou n'existe pas permet à un pirate de récolter une liste de comptes d'utilisateurs en soumettant plusieurs demandes de mot de passe (généralement via un proxy HTTP comme burp suite) et en notant si le courriel est trouvé. Pour vous protéger contre le moissonnage des identifiants, vous devez vous assurer qu'aucune fonction liée à la connexion/auth ne fournit d'indication sur le moment où l'adresse électronique d'un utilisateur valide a été saisie dans un formulaire de connexion/réinitialisation de mot de passe.

Pour en savoir plus, consultez le Manuel du pirate d'applications Web . Il s'agit d'une excellente lecture sur la création de modèles d'authentification sécurisés.

EDITAR : En ce qui concerne la question dans votre édition - je suggérerais :

"Un email de demande de mot de passe a été envoyé à l'adresse que vous avez fournie. Si un email n'arrive pas sous peu, veuillez vérifier votre dossier spam. Si aucun email n'arrive, alors aucun compte n'existe avec l'email que vous avez fourni."

Il s'agit d'un compromis entre la facilité d'utilisation et la sécurité. Vous devez trouver un équilibre en fonction du contexte : la sécurité est-elle suffisamment importante pour vous et vos utilisateurs pour justifier ce désagrément ?

4 votes

Ne seriez-vous pas également en mesure de déterminer si une adresse électronique a déjà été utilisée lors de l'inscription ?

1 votes

Oui, mais la même approche pourrait être utilisée pour notifier les utilisateurs existants. Les mêmes réserves concernant l'impact sur la facilité d'utilisation s'appliquent.

8voto

Will Hartung Points 57465

Envoyez un courriel avec le nouveau mot de passe.

Forcer un changement de mot de passe quand ils arrivent et entrer le nouveau mot de passe.

Cela garantit que la personne qui a voulu le mot de passe sera la seule à pouvoir accéder au compte.

Si l'e-mail est reniflé, quelqu'un peut accéder au compte (bien sûr), mais la personne concernée le découvrira immédiatement (puisque le mot de passe que vous venez de lui envoyer ne fonctionne pas).

Envoyez également des confirmations de changement de mot de passe aux utilisateurs.

Si quelqu'un reçoit le nouveau mot de passe, puis un e-mail disant "merci d'avoir changé le mot de passe", il sera plutôt perplexe et en parlera à un administrateur s'il ne l'a pas fait.

0 votes

Mauvaise idée. Le renifleur pourrait faire beaucoup de dégâts avant que la personne concernée ne soit en mesure de contacter le service clientèle.

2voto

Brock Woolf Points 16128

L'utilisation du lien de vérification de l'e-mail/réinitialisation du mot de passe vous offrira une meilleure sécurité. Si vous regardez autour de vous, c'est ainsi que la plupart des sites Web procèdent et les gens sont plutôt habitués à cette vérification. Je vous recommande donc d'utiliser ce type d'authentification.

1voto

Auero Points 38

Je pense que l'option 2 (de gbrandt) serait une excellente méthode si elle est combinée avec certaines informations personnelles dont vous disposez déjà pour l'utilisateur, par exemple la date de naissance.

Lorsque l'utilisateur demande un nouveau mot de passe (réinitialisation) en saisissant son adresse électronique, il doit également saisir une date de naissance correcte (ou autre) avant que le mot de passe ne soit réinitialisé et qu'un nouveau mot de passe ne lui soit envoyé par courrier électronique.

Seuls ceux qui le connaissent bien peuvent éventuellement le contrarier en réinitialisant son mot de passe ! Ça ne peut pas être un étranger ou un bot

Après 5 ou 7 mauvaises combinaisons d'adresse électronique et de date de naissance, l'utilisateur reçoit un message électronique l'informant que la réinitialisation de son mot de passe a été demandée et qu'elle a échoué en raison d'un justificatif d'identité incorrect. La réinitialisation du mot de passe pour ce compte est alors suspendue pendant 24 heures ou toute autre période souhaitée.

(si un trop grand nombre d'utilisateurs contactent le webadmin au sujet de cet e-mail, il saura que quelqu'un essaie d'obtenir des informations de manière malveillante sur votre site/application).

Qu'est-ce que vous en pensez ?

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