Créer une page de 'mot de passe oublié'

a70m Messages postés 2763 Date d'inscription   Statut Contributeur Dernière intervention   -  
 nico2a -
Bonjour à tous,

J'ai créé un site avec un espace membre etc etc ... Il fonctionne parfaitement.
J'ai aussi essayé de créer la fonction mot de passe oublié de la manière suivante :
(tous les mots de passe sont hachés en MD5)

On demande le pseudo et l'adresse e-mail, s'ils correspondent, on envoie un mail contenant un mot de passe aléatoire provisoire en md5 et on fait une requête SQL qui change le mot de passe du membre en question et qui le remplace par le provisoire.
Ensuite le membre peut se connecter avec ce mot de passe provisoire.

Mais il y a des bugs ... Rien ne fonctionne. Parce que dans ma table SQL oubli_pass il ne peut pas y avoir deux fois le même membre, je ne sais pas pourquoi ... Alors j'ai fait un script qui vide la table tous les jours à minuit, mais bon, ce n'est pas très propre comme code donc j'aime pas. De plus, c'est un peu compliqué comme procédure pour les membres ...

Donc j'aimerai savoir si quelqu'un d'entre vous pouvez me dire comment sont faites la plupart des pages 'mot de passe oublié' ou encore m'expliquer comment "dé-hacher" un mot de passe MD5 et l'envoyer par mail au membre.
Evidemment, que je ne puisse pas voir les mots de passe "dé-hachés" question de respect de la confidentialité ...

J'espère avoir été précis, et je reste dans les parages si vous avez besoin de précisions.
Merci d'avance à la communauté !!

Cordialement,
a70m


A voir également:

12 réponses

Nico_ Messages postés 1219 Date d'inscription   Statut Membre Dernière intervention   189
 
bonjour,

Perso je fais comme toi sauf que j'utilise pas de table supplémentaires !

Décrypté le mot de passe d'un membre je trouve ça pas super car beaucoup de personne utilise le même mot de passe! (ce n'est que mon avis)

solution 1:

pour ce qui concerne le mot de passe je fais avec 3 champs:

champs datepswd == date du changement du mot de passe par l'utilisateur via le panel
champs pswd == au mot de passe crypté en md5()
champs resetpswd == date d'envois du nouveau mot de passe (dans mon cas un changement de mot de passe par jour!)

Dans se cas un e-mail est envoyer avec le pseudo et le mot de passe aléatoire

Solution 2:

avec les 4 champs

champs datepswd == date du changement du mot de passe par l'utilisateur via le panel
champs pswd == au mot de passe crypté en md5()
champs resetpswd == contient une chaines de caractères crypté et aléatoire (une clé)
champs resetdate == date de validité du champs resetpswd

Dans se cas un e-mail est envoyer avec un lien du type:
thhp://adresse.de.ton.site/resetpswd?key=157495zserty6541cfdr5d5s85
et il peut saisir directement son nouveau mot de passe si le temps est pas dépassé !


si ça peux t'aider
Bonne journée
0
a70m Messages postés 2763 Date d'inscription   Statut Contributeur Dernière intervention   217
 
merci de ta réponse Nico_

Mais il y a quelque chose que je ne comprends pas dans ta solution 1 (qui, dans l'idée, me plait) c'est que tu parles d'une date de changement de mot de passe, et tu dis qu'un mail est envoyer avec le mot de passe. Mais alors, le mail contient un mot de passe aléatoire ou le mot de passe que le membre a rentré lors de son inscription (ou s'il l'a changé après)

a70m
0
Nico_ Messages postés 1219 Date d'inscription   Statut Membre Dernière intervention   189
 
un mot de passe aléatoire !

Merci de ta remarque je modifie le message !
0
a70m Messages postés 2763 Date d'inscription   Statut Contributeur Dernière intervention   217
 
Merci, et n'y aurait-il pas une méthode qui permettrait de renvoyer simplement le mot de passe actuel du membre par mail ?
Une simple fonction de "dé-hachage" MD5 n'existe pas ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Nico_ Messages postés 1219 Date d'inscription   Statut Membre Dernière intervention   189
 
0
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Cool ton système, je vais pouvoir changer le mot de passe de qui je veux pour l'ennuyer ; et je peux même mettre le miens si ton adresse et du style pass_oublie.php?id_membre=x&newpass={pass en md5} !

Déjà, réinitialiser le pass sans confirmation, c'est désagréable : n'importe qui peut alors ennuyer son monde en cliquant sur le lien.

Perso, je fais comme ceci :
J'ai une table "jetons_reinit_pass" avec 2 champs :
- jeton : une chaine générée puis hashée en md5
- membre_id : identifiant unique du membre

Lorsqu'on clique sur le lien vers "pass_oublie.php", un formulaire s'affiche demandant soit le pseudo, soit l'adresse email.
Avec une de deux infos, je récupère l'id du membre, je génère une chaine que je hashe en md5 puis j'insère l'ensemble dans ma table.
Ensuite, j'envoie un email contenant le lien vers reinit_pass.php?token={jeton}, et je précise également que si l'utilisateur n'a pas demander à réinitialiser son pass, il peut ignorer ce message.
Lorqu'on se rend sur la page reinit_pass.php, j'affiche deux champs pour entrer un nouveau mot de passe (avec confirmation) ; à l'envoie, je vérifie que les deux champs soient égaux : si oui, je hashe le pass en md5, je fais un UPDATE et je supprime le jeton.
0
a70m Messages postés 2763 Date d'inscription   Statut Contributeur Dernière intervention   217
 
Merci de ta réponse, j'ai compris ton fonctionnement dans les grandes lignes disons. Il faudrait que je me penche dessus plus longuement pour coder ces pages, mais je prends note de ta procédure.

Cependant, n'y a-t-il pas moyen d'envoyer clairement et simplement le mot de passe d'origine du membre par mail ?
0
Nico_ Messages postés 1219 Date d'inscription   Statut Membre Dernière intervention   189
 
bonjour,
si si, tu le stock en claire dans ta bdd (non crypté) !

bonne journée
0
a70m Messages postés 2763 Date d'inscription   Statut Contributeur Dernière intervention   217
 
Oui ça je sais. Mais moi, je les hash ...
0
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Si ça peut t'aider :
https://openclassrooms.com/fr/courses

Ça peut aussi t'intéresser :
http://www.siteduzero.com/tutoriel-3-158277-renvoyer-un-mot-de-passe-par-e-mail-la-methode-vernam.html
0
a70m Messages postés 2763 Date d'inscription   Statut Contributeur Dernière intervention   217
 
Merci, je vais regarder
0
nico2a
 
"Si ça peut t'aider :
http://www.siteduzero.com/tutoriel-3-37280-redefinition-de-mot-de-passe.html "

Salut dit t'aurai pas les source de se tuto pas hasard stp ?
0
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Salut.

Non.
Ici, je détaille ma méthode.
Il ne reste plus qu'à mettre ça en code, c'est la partie la plus facile quand on a compris la technique.
0
AnGelluS Messages postés 153 Date d'inscription   Statut Membre Dernière intervention   6
 
Hello,

Le pass vernam est une bonne solution pour renvoyer le mdp : tuto sur le site du zero

En gros tu couples le mdp et une clé ( soit que tu génères aléatoirement soit que l'utilisateur rentre à l'inscription : du style Répondez a cette question pour renvoyer votre mdp ).

Ensuite pour renvoyer le mdp, on a besoin soit du login soit du mail, et de la clé. Si la bonne clé est rentré, tu auras le bon décryptage et donc le bon mdp.

Sinon comme là explique avion-f16,
-un lien pour réinitialiser le mdp
-tu confirmes si tu veux ou non réinitialiser via le lien reçu par mail
-si oui tu génères un nouveau mdp haché via md5
-tu renvoies le mdp par mail à l'utilisateur ( le nouveau mdp avant d'être haché ^^ )
-ensuite si dans ton espace membre tu as un endroit pour modifier le mdp, l'utilisateur peut modifier et mettre un mdp qui lui sera plus facile à retenir.

VOila voila,
0
nico2a
 
mais genre une clef de base 0, si la clef est égal a 0 ça peut pas marcher (sécurité), si l'utilisateur rentre son mail dans le formulaire sa génère un clef dans le champs clef et si l'utilisateur est a l'origine de cette demande il clique sur le lien ex: oublie_mdp.php?clef="la clef"
si sa correspond alors on envoie le mdp a l'utilisateur avant d'être haché puis on update le champs passe avec mdp et le news mdp aleatoire
0