53 votes

Quelle est la meilleure façon d'implémenter la fonction "mot de passe oublié" ?

Je cherche la meilleure méthode pour mettre en place une fonction "mot de passe oublié".

J'ai deux idées :

  1. Lorsque l'utilisateur clique sur "Mot de passe oublié", il doit saisir son nom d'utilisateur, son adresse électronique et peut-être sa date de naissance ou son nom de famille. Un message contenant un mot de passe temporaire est alors envoyé à l'adresse électronique de l'utilisateur. L'utilisateur utilise le mot de passe temporaire pour se connecter et réinitialiser son mot de passe.

  2. Similaire, mais l'e-mail contiendrait un lien permettant à l'utilisateur de réinitialiser son mot de passe.

Ou quelqu'un peut-il me suggérer un moyen plus efficace et plus sûr ? Je pense également envoyer le mot de passe temporaire ou le lien, et obliger l'utilisateur à réinitialiser le mot de passe dans les 24 heures, sinon le mot de passe temporaire ou le lien ne sera pas utilisable. Comment faire ?

55voto

Vilx- Points 37939

Mise à jour : révisé en mai 2013 pour une meilleure approche

  1. L'utilisateur saisit son nom d'utilisateur et clique sur "mot de passe oublié". Je recommande également la possibilité d'entrer l'adresse électronique au lieu du nom d'utilisateur, car les noms d'utilisateur sont parfois oubliés aussi.
  2. Le système dispose d'un tableau password_change_requests avec les colonnes ID , Time y UserID . Lorsque le nouvel utilisateur appuie sur le bouton, un enregistrement est créé dans la table. Le site Time contient l'heure à laquelle l'utilisateur a appuyé sur le bouton "Mot de passe oublié". Le site ID est une chaîne. Une longue chaîne aléatoire est créée (disons, un GUID) et ensuite haché comme un mot de passe (ce qui est un sujet distinct en soi). Ce hachage est ensuite utilisé comme "ID" dans la table.
  3. Le système envoie un courriel à l'utilisateur qui contient un lien. Le lien contient également la chaîne d'identification originale (avant le hachage). Le lien sera quelque chose comme ceci : http://www.mysite.com/forgotpassword.jsp?ID=01234567890ABCDEF . La page forgotpassword.jsp devrait être capable de récupérer le paramètre ID. Désolé, je ne connais pas Java, je ne peux donc pas être plus précis.
  4. Lorsque l'utilisateur clique sur le lien dans l'e-mail, il est déplacé vers votre page. La page récupère le ID de l'URL, le chiffre à nouveau et le compare à la table. Si un tel enregistrement existe et qu'il ne date pas de plus de 24 heures, par exemple, l'utilisateur est invité à entrer un nouveau mot de passe. .
  5. L'utilisateur saisit un nouveau mot de passe, clique sur OK et tout le monde vit heureux... jusqu'à la prochaine fois !

15voto

David Glenn Points 12819

Tout dépend de votre site et du niveau de sécurité que vous essayez d'atteindre, mais le processus de base pour une application web est le suivant :

  1. L'utilisateur se rend sur la page "J'ai oublié mon mot de passe" et saisit son nom d'utilisateur ou son adresse électronique (selon le cas) pour demander la réinitialisation de son mot de passe.

  2. À ce stade, vous pouvez éventuellement confirmer la demande en demandant des informations supplémentaires, telles que la réponse à une question de sécurité prédéfinie ou la date de naissance, etc. Ce niveau supplémentaire permet d'éviter que les utilisateurs reçoivent des e-mails qu'ils n'ont pas demandés.

  3. Recherchez le compte de l'utilisateur. Enregistrez un mot de passe temporaire (généralement un GUID) et un horodatage dans l'enregistrement du compte. Envoyer un courriel à l'utilisateur contenant le mot de passe temporaire.

  4. L'utilisateur clique sur le lien contenant le mot de passe temporaire et son identifiant dans l'e-mail ou se rend sur la page "Mot de passe oublié" et copie et colle le mot de passe temporaire et son identifiant. L'utilisateur saisit son nouveau mot de passe et le confirme.

  5. Consulter l'enregistrement de l'utilisateur et si l'heure actuelle est dans une limite de temps spécifiée (par exemple 1 heure) de l'horodatage sauvegardé à l'étape 2, alors hacher et sauvegarder le nouveau mot de passe. (Évidemment, seulement si les mots de passe temporaires correspondent !) Supprimez le GUID et l'horodatage temporaires.

Le principe ici est que l'utilisateur reçoit par e-mail un mot de passe temporaire qui lui permet de changement leur mot de passe. Le mot de passe stocké à l'origine (il doit être haché !) n'est jamais remplacé par un mot de passe temporaire au cas où l'utilisateur s'en souviendrait.

Le mot de passe original ne sera jamais affiché à l'utilisateur car il doit être haché et inconnu.

Note ce processus repose entièrement sur la sécurité du compte de messagerie de l'utilisateur. Cela dépend donc du niveau de sécurité que vous souhaitez atteindre. C'est généralement suffisant pour la plupart des sites/applications.

6voto

andres.santana Points 69

Je vais y aller avec :

  1. Demander l'email de l'utilisateur, vérifier que l'email est enregistré
  2. Générer le GUID, et l'envoyer à cet email
  3. Ne pas encore réinitialiser le mot de passe
  4. L'utilisateur clique sur le lien, puis doit saisir un nouveau laissez-passer.
  5. Réinitialisez le mot de passe uniquement lorsque l'utilisateur est sur votre site et qu'il a cliqué sur le bouton de réinitialisation après avoir tapé le nouveau mot de passe.
  6. Rendez ce GUID expirable dans un court laps de temps pour le rendre plus sûr.

4voto

Toon Krijthe Points 36327

Si vous indiquez une adresse électronique lors de l'inscription. Le bouton "mot de passe oublié" envoie un courriel à cette adresse. Cela permet de s'assurer que les informations sont envoyées à une adresse électronique de confiance.

(Sauf si la base de données est piratée, mais alors rien n'est sûr).

4voto

jinsungy Points 3902

Lorsque vous envoyez des informations par courrier électronique, elles ne sont pas sécurisées. Il y a trop de façons dont quelqu'un peut l'obtenir. Ce serait un jeu d'enfant pour un pirate habile qui chercherait à voler vos informations.

N'envoyez pas d'informations personnelles telles que des mots de passe ou des informations sur les revenus par courrier électronique, car la fuite ou le vol de ces informations peut être TRÈS embarrassant pour vous et votre organisation. Pensez sérieusement à la sécurité. Il suffit d'un seul incident pour que toutes les briques tombent.

Quant à la récupération du mot de passe, lisez attentivement Meilleures pratiques en matière de mot de passe oublié .

L'essentiel est qu'une application qui respecte les meilleures pratiques doit permettre à un utilisateur de réinitialiser son propre mot de passe. Des questions de sécurité personnelles devraient être utilisées. L'application ne doit pas envoyer de courriel, afficher des mots de passe ou définir des mots de passe temporaires.

EDIT : Mise à jour du lien

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