|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : janvier 2012 Messages : 27 ![]() |
Bien le bonjour tout le monde,
utilisant PHP depuis peu, je souhaiterais savoir comment faire pour générer un lien envoyé par e-mail qui active un mot de passe généré aléatoirement. J'ai déjà l'envoi de l'e-mail du nouveau mot de passe, mais l'update se fait tout seul dans la base de donnée. Donc, comment faire pour générer un lien permettant l'éxécution de la requête sql ? Au plaisir de vous lire. |
|
|
00
|
|
|
#2 | ||
|
Invité de passage
![]() Inscription : janvier 2012 Messages : 27 ![]() |
Bonsoir,
j'y suis presque. Désormais, lorsqu'un membre entre son adresse e-mail dans "mot de passe oublié", celui-ci reçoit dans sa messagerie un lien de confirmation permettant d'activer un mot de passe généré aléatoirement. Ce mot de passe est aussi envoyé par e-mail. Le hic, c'est que dès qu'une personne entre http://www.lesite.com/repertoire/con...essse@mail.com dans l'url, ceci active directement un mot de passe à la personne à qui appartient l'adresse e-mail. Le lien de confirmation est sous cette forme: http://www.lesite.com/repertoire/con..._md5_aleatoire. Le code de confirmation: Code :
|
||
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() Développeur informatique Inscription : août 2005 Messages : 1 179 ![]() |
Bonsoir,
il faut que : -tu utilises un hash (md5, sha ou autre) pour crypter l'adresse email dans ton lien -dans la page de génération, tu décryptes le hash pour générer le nouveau MDP et l'associer a l'email dans la base -tu supprimes le hash dans la base de données
__________________
http://cdemarche.developpez.com/ Tu as la réponse à ta question ? N'oublies pas le petit en bas à gauche de ton message...
|
|
|
00
|
|
|
#4 | ||||||
|
Invité de passage
![]() Inscription : janvier 2012 Messages : 27 ![]() |
Merci de ta réponse.
J'ai procédé à un nouveau système que voici. La personne entre son adresse e-mail dans mot de passe oublié. Un e-mail lui ai envoyé avec son nouveau mot de passe et un lien de confirmation. Si elle clique sur le lien de confirmation, le nouveau mot de passe remplace l'ancien. Le hic, c'est que le problème est presque le même. Si une personne entre l'adresse e-mail d'une autre dans mot de passe oublié, ceci va générer un nouveau mot de passe sans le remplacer. La personne n'a plus qu'à entrer un lien comme dit sur mon message précédent, et hop son mot de passe sera changé. Mais le code est plus simple. Comment faire pour décrypter un hashage sachant que c'est irréversible ? Le nouveau code: send_password.php: Code :
Code :
Code :
|
||||||
|
|
00
|
|
|
#5 | |
|
Membre Expert
![]() ![]() Tiger Scott Développeur Web Inscription : juin 2006 Messages : 1 250 ![]() |
Citation:
hash != crypt cryptage = decryptage = re lisible hash = impossible a "dehasher" = a jamais illisible
__________________
La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins. N'oubliez pas le Le tag resolu. Need_! |
|
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : janvier 2012 Messages : 27 ![]() |
D'accord, je crois comprendre.
Donc décrypter serait comparer deux chaînes cryptées c'est ça ? |
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() Développeur informatique Inscription : août 2005 Messages : 1 179 ![]() |
oui en effet, j'induis en erreur...
Il te faudra bien comparer 2 hashages.
__________________
http://cdemarche.developpez.com/ Tu as la réponse à ta question ? N'oublies pas le petit en bas à gauche de ton message...
|
|
|
00
|
|
|
#8 |
|
Membre chevronné
![]() Ingénieur développement logiciels Inscription : février 2008 Messages : 430 ![]() |
Quitte à utiliser un hash dans le lien, utilise un jeton généré aléatoirement. Ca évitera tout risque de hack.
Lors de la demande de nouveau pass, tu génère un jeton que tu stockes en base. Tu envoies ton mail avec le lien avec le jeton. Si la personne clique sur le lien, tu actives le jeton qui dans la base est lié au bon user. Tu génères ton nouveau pass et tu supprimes le jeton. Tu peux aussi mettre un timestamp en base avec le jeton et du coup lui donner une durée de vie restreinte.
__________________
Le logiciel, c'est comme le sexe, c'est meilleur quand c'est libre. Linus Torvalds |
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Inscription : janvier 2012 Messages : 27 ![]() |
Merci pour ces réponses.
Je suis en train de mettre en place un système de jeton. Je vous tiens au courant par la suite. (: |
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Inscription : janvier 2012 Messages : 27 ![]() |
Veuillez m'excuser du double post.
Voila, tout est bon, le système de jeton est en place et opérationnel. Cependant, comment faire pour imposer un délais comme tu dis Marc ? Je génère mon jeton comme ceci: Code :
$_SESSION['token'] = md5(uniqid(rand(), true)); |
|
|
00
|
|
|
#11 |
|
Membre chevronné
![]() Ingénieur développement logiciels Inscription : février 2008 Messages : 430 ![]() |
Par délai tu veux dire durée de vie de la session?
Si c'est ça tu peux si l'utilisateur tente d'utiliser un jeton (clique sr le lien dans le mail) checker en plus de l'éxistence du jeton, le diff entre la date de création du jeton en base et la date actuelle. Si c'est OK tuvalides l'init du MDP sinon tu fais comme si le jeton n'était pas valide.
__________________
Le logiciel, c'est comme le sexe, c'est meilleur quand c'est libre. Linus Torvalds |
|
|
00
|
|
|
#12 |
|
Invité de passage
![]() Inscription : janvier 2012 Messages : 27 ![]() |
Oui par rapport à la durée de la session.
Mais je ne vois pas comment mettre en base une date au jeton. |
|
|
00
|
|
|
#13 |
|
Membre chevronné
![]() Ingénieur développement logiciels Inscription : février 2008 Messages : 430 ![]() |
Dans ta base, j'imagine que tu as créé une table avec un champs qui contient la chaîne du jeton.
Dans cette table, tu rajoute un nouveau champ qui contiendra la date de création du jeton. Ca donnera un truc de ce genre : Table Jeton: Champs valeur (contient le hash généré aléatoirement) Champs dateCreation (contient la date de création du jeton)
__________________
Le logiciel, c'est comme le sexe, c'est meilleur quand c'est libre. Linus Torvalds |
|
|
00
|
|
|
#14 |
|
Invité de passage
![]() Inscription : janvier 2012 Messages : 27 ![]() |
Ah oui je vois.
Le truc, c'est que je n'utilise pas ma base pour les jetons. J'utilise juste les sessions. (: |
|
|
00
|
|
|
#15 |
|
Membre chevronné
![]() Ingénieur développement logiciels Inscription : février 2008 Messages : 430 ![]() |
Ah j'ai un doute sur la compréhension de la solution.
Où stockes-tu le jeton? Si nulle part, comment fais-tu le lien entre le jeton utilisé par le user et son id ou email?
__________________
Le logiciel, c'est comme le sexe, c'est meilleur quand c'est libre. Linus Torvalds |
|
|
00
|
|
|
#16 | ||||||
|
Invité de passage
![]() Inscription : janvier 2012 Messages : 27 ![]() |
Le truc, c'est que je compare le lien envoyé avec des sessions et le lien lorsque la personne clique, à l'aide d'un get.
Voici mon code: send_password.php: Code :
Code :
Code :
|
||||||
|
|
00
|
|
|
#17 |
|
Membre chevronné
![]() Ingénieur développement logiciels Inscription : février 2008 Messages : 430 ![]() |
Tu as un problème dans confirmation.php.
Tu ne dois pas vérifier que la session contient le token. Pourquoi? Parceque cela veux dire que l'utilisateur doit utiliser le lien dans les X minutes après avoir demandé le reinit du MDP et sur le même navigateur (sans l'avoir fermé). Ca paraît un peu contraignant et il n'y a plus l'utilité d'utiliser un token vu que tu utilises la session php. L'idée c'était plutot de stocker ton token en BDD. Quand un utilisateur clique sur le lien tu vas vérifier que le token est valide en BDD et si oui tu valorises les variables de sessions avec les infos du user. Faut bien comprendre que l'utilisateur qui clique sur le lien peux n'avoir aucune donnée de session au moment où il clique sur le lien. C'est le token dans l'url qui garantie la sécurité.
__________________
Le logiciel, c'est comme le sexe, c'est meilleur quand c'est libre. Linus Torvalds |
|
|
00
|
|
|
#18 |
|
Invité de passage
![]() Inscription : janvier 2012 Messages : 27 ![]() |
Merci encore pour cette réponse.
Mais le système que j'ai actuellement est aussi sécurisé non ? |
|
|
00
|
|
|
#19 |
|
Membre chevronné
![]() Ingénieur développement logiciels Inscription : février 2008 Messages : 430 ![]() |
Ce qui est dommage c'est que si la personne reçoit le mail pour reinit le password, elle devra obligatoirement cliquer sur le lien rapidement.....
C'est pas un problème de sécurité mais c'est contraignant.
__________________
Le logiciel, c'est comme le sexe, c'est meilleur quand c'est libre. Linus Torvalds |
|
|
00
|
|
|
#20 |
|
Invité de passage
![]() Inscription : janvier 2012 Messages : 27 ![]() |
Oui j'y réfléchirai merci.
Et ce n'ai pas possible justement d'augmenter/réduire le temps ? |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com