Désolé je m'exprime mal en ce moment je crois, ça me fait ça sur tous les forums !
Pour reprendre en détail :
Page 1 : password reset. L'utilisateur saisis une adresse email dans un champ, tu as aussi un token csrf pour la securité. Ton process à ce moment là est : vérifier le csrf - vérifier que l'email existe - générer un code unique (cf
Enrico Zimuel, ou
randomlib d'IrcMaxell) - stocker le code unique avec l'id de l'utilisateur et le timestamp UTC courant dans la base de donnée - envoyer l'email à l'utilisateur.
A partir de là, le code est lié à l'utilisateur uniquement dans ta base de données, et ne peut être recréé.
L'utilisateur suit le lien de ton mail et tombe sur une page. Tu récupères le code en get, vérifie qu'il existe dans la base de données, compare le timestamp associé dans la bd avec le timestamp courant de ton serveur web converti en UTC, et c'est gagné ! Cette dernière vérification sert en effet à définir si le code est trop vieux et dire à l'utilisateur d'en redemander un.
Du coup dans ce cas là, le token est une string générée pour être unique, donc ton problème disparait.
Partager