2 votes

Lien pour l'oubli du mot de passe : Comment valider le lien ?

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

Je suis en train de mettre en place un système de mot de passe oublié pour une application web. L'utilisateur recevra un mail avec un lien vers la page web pour saisir le nouveau mot de passe. J'aimerais limiter la validité du lien à un maximum de 24 heures depuis sa création. Comment dois-je procéder ? Comment dois-je générer ce paramètre afin que le même lien ne soit pas réutilisé ou que l'on ne puisse pas modifier le lien et le réutiliser ?

Je ne sais pas si cela peut être utile, mais j'utilise le framework Spring 3.1.

1voto

Umesh Awasthi Points 13168

Pour ce type de fonctionnalité, vous devez créer un jeton aléatoire basé sur l'horodatage et l'envoyer avec le lien "mot de passe oublié".

  1. Créer un jeton aléatoire lorsque l'utilisateur frappe le mot de passe oublié et l'enregistrer dans la base de données avec la durée d'expiration.
  2. Envoyer le lien avec le jeton intégré à l'utilisateur par courrier électronique.
  3. Lorsque l'utilisateur clique sur le lien, la durée d'expiration du jeton est d'abord vérifiée et, si elle est dépassée, un message est affiché à l'intention de l'utilisateur.
  4. Si le jeton n'a pas expiré, l'utilisateur est autorisé à modifier son mot de passe et peut définir l'état du jeton comme invalide.

Afin de renforcer la sécurité, vous pouvez créer des étapes supplémentaires pour vous assurer que le lien provient d'un utilisateur valide et qu'il n'a pas été piraté.

0voto

dan Points 6944

L'approche la plus courante consiste à inclure un identifiant généré dans votre URL. Cet identifiant sera conservé dans la base de données avec une date de création ou d'expiration. De cette manière, vous pourrez créer une tâche de fond pour effacer vos identifiants expirés.

0voto

Ce que je ferais, c'est.. :

  • Réinitialisation du mot de passe de l'utilisateur (valeur aléatoire) avec une date d'expiration de maintenant + 24h
  • Envoyer à l'utilisateur le nouveau mot de passe avec un lien vers la page "changer votre mot de passe".

Avantages :

  • La sécurité de Spring s'occupera de l'expiration
  • Si je "vole" un lien vers la page "changez votre mot de passe", il ne vaut rien : l'utilisateur doit saisir son mot de passe actuel et son nouveau mot de passe (deux fois).

0voto

Tomasz Nurkiewicz Points 140462
  1. Une fois que l'utilisateur a demandé un nouveau mot de passe, générez un jeton aléatoire, par exemple à l'aide de la fonction RandomStringUtils.randomAlphanumeric(int) . Ce jeton est stocké dans une base de données associée à l'identifiant de l'utilisateur qui a demandé la réinitialisation de son mot de passe. L'horodatage de la création du jeton est également conservé.

  2. Envoyer un lien à un utilisateur par courrier électronique. Ce lien doit contenir le jeton que vous venez de créer dans l'URL.

  3. Une fois que l'utilisateur a saisi ce lien, il lui est demandé de saisir un nouveau mot de passe. Si vous craignez que le lien ait été divulgué, demandez également quelques informations personnelles (e-mail, prénom, etc.).

  4. Du côté du serveur, vous :

    1. Trouver le jeton et l'identifiant de l'utilisateur associé à ce jeton

    2. S'assurer que le jeton est toujours valide en comparant la date du jour.

    3. Stocker le nouveau mot de passe haché

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