Crypter mot de passe mais pouvoir le récupérer

Eléphant du PHP | 331 Messages

30 janv. 2007, 18:50

Bonjour,

Actuellement, j'utilise la fonction md5() pour hacher le mot de passe avant de le stocker dans ma bdd.
Désormais, je cherche à pouvoir permettre à un utilisateur de récupérer son mdp en cliquant par exemple sur "mot de passe perdu".
En effectuant des recherches, j'ai constaté que la fonction md5() est irréversible et par conséquent, impossible d'obtenir ce que je cherche à faire.

A ce jour, je ne sais pas comment renvoyer un mot de passe à un utilisateur sans le stocker au plus simple sans aucun cryptage dans ma BDD.

Pourriez-vous me dire comment vous faites pour le gérer tout en gardant un minimum de sécurité.

Merci d'avance,

Jay

Eléphant du PHP | 445 Messages

30 janv. 2007, 18:58

Bonjour,

Il ne faut pas confondre hashage et cryptage.

Le md5() est une fonction de hashage, c'est à sens unique, un mot de passe hashé ne peut pas être récupéré.

Tu devrais trouver des fonctions de cryptage / décryptage dans la doc sans trop de problème, ou grâce à une recherche sur le forum ;)
LLDC
Ulti

ViPHP
ViPHP | 3607 Messages

30 janv. 2007, 19:04

bonjour,
Je ne vais pas essayer de t'influencer sur telle ou telle manière de procéder... seulement, sache que le "hachage" est plus sécurisé que le "cryptage"... pour une raison simple, si par malheur quelqu'un accède à ta base de donnée, et qu'il sait un minimum craquer des cryptage (pas très dur), alors il aura les mdp de tout tes membres...
Bon maintenant c'est vrai que c'est un petit peu plus embétant pour les membres qui perdent leurs mots de passe... mais face au gain de sécurité!!
Bon sinon voici la méthode que j'utilise:
Je "hash" mes mots de passes avec md5, comme tu le faits, et lorsqu'un utilisateur à perdu son mot de passe, un nouveau mot de passe est générer aléatoirement... l'utilisateur recevra donc par mail un pass de ce type:

Code : Tout sélectionner

hTfdpKJU56b
je te l'accorde pas très facile à retenir, mais je laisse la possibilité aux membres de changer leurs mots de passes une fois connectés...
Donc ils utilisent un peti copier/coller, et retourne dar dar dans leur espace membre remettre leur date de naissance en guise de mot de passe :langue:
Si tu as des questions n'hésite pas

Eléphant du PHP | 331 Messages

30 janv. 2007, 19:18

Merci déjà pour ta réponse claire, cossue, et rapide !

Sinon, c'est bien vers ta méthode que je comptais me diriger.
A ce moment là, j'ai deux questions (une de sécurité et une technique)

1) sécurite : j'imagine facilement des utilisateurs, qui, pour embeter le copain aussi inscrit sur mon site, pourrait taper une adresse email qui n'est pas la leur, et par conséquent changer le mot de passe du copain (à l'insue de celui-ci). La première fois, c'est marrant, mais si l'opération se répère plusieurs dois, je vois déjà les gens venir se plaindre.
Comment gérer la chose pour éviter ce genre de désagréments ? Je pense à une vérif question secrète/réponse au moment de la demande de regénération du mdp. Une autre idée ou celle ci est bien ?

2) technique : comment faire, ou surtout quelle fonction ou bout de code à utiliser pour générer automatiquement une chaine de caractères tels que tu me l'as présenté ?

Merci encore !

Jay !

Invité
Invité n'ayant pas de compte PHPfrance

30 janv. 2007, 19:45

1) sécurite : j'imagine facilement des utilisateurs, qui, pour embeter le copain aussi inscrit sur mon site, pourrait taper une adresse email qui n'est pas la leur !
??

Si il tape une adresse mail qui ne lui appartient pas, il ne recevra jamais le mot de passe perdu... donc, comment veut tu qu'il change le mot de passe a leur insu ?

ensuite,pour regénérer un mot de passe aléatoire, fait un truc du genre :
for ($ligne=0;$ligne<10;$ligne++){
	$mdp.=substr('0123456789AZERTYUIOPMLKJHGFDSQWXCVBN',(rand()%(strlen('0123456789AZERTYUIOPMLKJHGFDSQWXCVBN'))),1);
	}

Invité
Invité n'ayant pas de compte PHPfrance

30 janv. 2007, 19:50

Encore moi,

Un style que question / réponses secrete ? Je trouve l'idée pas mal et très simple a réaliser !

Lors de l'inscription, tu demande un mot secret !

Lors d'une demande de récupération de mot de passe, tu demande le mot secret et tu vérifie dans la base par rapport à l'email ! Si c'est bon, tu envoie le mail ! Sinon, tu envoie baladé .... !

Invité
Invité n'ayant pas de compte PHPfrance

30 janv. 2007, 19:54

:oops:

En plus, cela présente quand même un inconvénient :

Si ton membre en + d'avoir oublié son mot de passe oublie également son mot ou réponses secrete, comment fait t'il ?

ViPHP
ViPHP | 3607 Messages

30 janv. 2007, 20:29

je répond un peu tout azimut... pour ce qui est du coup d'embéter les copains
ça ne doit pas être possible normalement, car en plus de l'adresse, tu doits demander le pseudonyme de connection du membre, qui ne doit être connu que de lui...
Pour ce qui est de la génération de mdp, il y a deux solutions içi: http://www.phpfrance.com/forums/viewtop ... ot+++passe
si des doutes subsistes... hésite toujours pas ;-)

Invité
Invité n'ayant pas de compte PHPfrance

30 janv. 2007, 20:37

je répond un peu tout azimut... pour ce qui est du coup d'embéter les copains
oui et en plus,je n'ai jamais entendu parler de ce genre de plaisanterie ou alors c'est très rare !