PHP - Comment implémenter la réinitialisation du mot de passe et l'expiration du jeton
Je suis à la recherche de configurer php récupération de mot de passe script, l'utilisation d'un jeton qui expire au bout de 24 heures. Mais je ne suis pas sûr de savoir comment aller à ce sujet. J'ai SHA1
crypté de l'utilisateur mots de passe à l'heure actuelle. Tout ce que je veux faire, je pense ajouter un jeton à l'URL qui est envoyé à l'utilisateur lors de leur demande de réinitialisation de mot de passe. Mais comment dois-je le faire correctement et de quoi ai-je besoin de stocker dans la base de données?
source d'informationauteur martinmcw
Vous devez vous connecter pour publier un commentaire.
$_GET['token']
)Je ne voudrais pas utiliser une base de données à tous. Mais d'une façon de chiffrement à la place.
Suffit d'envoyer les informations nécessaires dans le lien hypertexte fourni dans le courrier, signé par le hachage.
Quelque chose comme ceci
En le recevant seulement split et de décodage arrière et ensuite vérifier le hachage et le délai d'expiration.
Vous avez besoin de stocker un jeton unique et un jeton date et heure d'expiration. Lorsque les utilisateurs visites uniques URL, vous devez valider le jeton, le nom d'utilisateur et le jeton date et heure d'expiration. Si tout beaux, vous pouvez envoyer un nouveau mot de passe ou affichage d'un formulaire où l'utilisateur peut configurer un nouveau mot de passe.
Je voudrais aller à ce sujet par la mise en place d'une autre base de données appelée pessword_reset_sessions.
De sorte que vous pouvez stocker les informations suivantes:
userid
generalhash
userhash
timeinititated
les tentatives
puis avec l'id utilisateur que vous isnert l'id utilisateur obv, avec le général de hachage est une table de hachage qui n'est PAS affiché pour l'utilisateur mais sert à créer le userhash.
timeinitiated devrait être un Timestamp UNIX de quand il a d'abord demandé un nouveau mot de passe.
une fois que vous confirmez que l'utilisateur qui demande le mot de passe est entré dans la validation des informations telles que l'email, le nom, la question secrète. vous créez une ligne de la réinitialisation du mot de passe de la table.
et de délivrer un e-mail contenant le userhash.
lorsque la valeur de hachage est de retour via le
$_GET['hash']
ensuite, vous créez un autre de hachage à partir de lageneralhash
à comparer avec la valeur de hachage qui viennent via $_GET[], si le hash ne correspondent pas, vous incrémentez laattempts
vous pouvez aussi vérifier avant pour s'assurer qu'il ne s'est pas déclenché la sécurité pour 2 de nombreuses tentatives.