Recuperer le mot de passe

samiapirou Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   -  
ElementW Messages postés 4814 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour
je voulais faire un programme qui permet de récupérer le mot de passe en cas d'oublie
pouvez vous m'aider
merci

3 réponses

matrix4422 Messages postés 6118 Date d'inscription   Statut Contributeur Dernière intervention   1 358
 
Quel mot de passe ?
0
samiapirou Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   1
 
l'acces a l'espace client se fait par un formulaire d'authentification
si bien le login et le mot de passe
c'est a dire si le client oubli son mot de passe comment peut on lui envoyé son mot de passe
0
samiapirou Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   1
 
l'acces a l'espace client se fait par un formulaire d'authentification
si bien le login et le mot de passe
c'est a dire si le client oubli son mot de passe comment peut on lui envi=oyé son mot de passe
0
ElementW Messages postés 4814 Date d'inscription   Statut Contributeur Dernière intervention   1 223
 
C'est un poil compliqué.
Supposons que la table 'comptes' comporte les champs: id (int, auto increment), login (string), mdp (string, MD5/SHA1 du mot de passe), email (string), cle_recup (string), cle_recup_expire (datetime).

Créé une page où l'utilisateur doit rentrer son nom de compte et adresse email (et un captcha pour éviter le spam) qui fera un coup de SQL qui:
1. Trouvera l'entrée du compte
2. Créera la clé "cle_recup" (indice: sha1(rand()) ) et la date d'expiration de la clé (indice: strtotime("+15 min") ), et insérera ces données dans la base de données
3. Enverra un mail au propriétaire du compte vers une page http://tonsite.fr[nom du compte]&k=[la clé]

Et cette page "recup.php", demandera le nouveau mot de passe, et vérifiera la clé comme ceci:
1. On trouve l'entrée du compte (donné par $_GET["c"])
2. On compare le champ "cle_recup_expire" et la date+heure actuelle; s'il est trop tard, message d'erreur, sinon étape 3
3. On compare le champ "cle_recup" et la clé donnée dans $_GET["k"], si pas bon, erreur
4. On change le champ "mdp" du compte si tout est bon.

Une fois que c'est terminé, comme il faut ou avec une erreur, on efface la clé de la base, pour éviter les problèmes. Quand à la date d'expiration, on peut la "remettre à zéro" (date de l'époque UNIX).

C'est pas le plus simple à faire mais c'est robuste, et bien sécurisé (évidemment y'a mieux, on pourrait ajouter une vérification d'adresse IP, réduire les 15 minutes d'expiration à 5, etc...).
from human import idiocy
del idiocy
0