Page 1 sur 2
Fonction Md5
Posté : 15 juin 2009, 16:04
par Freddo31
Bonjour tout le monde.
Actuellement en stage, j'ai pour objectif de créer un site pour une école qui fait passer des test en ligne, sous formes de QCM.
donc il faut s'inscrire sur ce site et s'identifier pour accéder au tests.
Donc, mon maître de stage veut, et il a raison, que les MdP dans la BD soit cryptés...donc je pense utiliser la fonction MD5($mdp) pour crypter le mot de passe.
ça fonctionne bien...lors de l'inscription, sur ma page qui récupère les données du formulaire, j'ai ceci...
$pseudo = $_POST['pseudo'];
$mdp = md5($_POST['mdp']);
$mdp_bis = md5($_POST['mdp_bis']);
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$age = $_POST['age'];
voila, et dans ma BD, le mot de passe, ici je prends l'exemple "test" donne "098f6bcd4621d373cade4e832627b4f6" donc pour être crypté...il est crypté, mais le problème intervient lorsque je souhaite me connecté...ça ne fonctionne pas...comment faire?
Posté : 15 juin 2009, 16:12
par agité
Qu'est ce qui ne fonctionne pas ?
Tu as regarder si md5($_POST['password']); était différent de celui en base de donnée ? car le problème pourrait venir d'ailleurs.
Posté : 15 juin 2009, 16:49
par Freddo31
ce qui ne marche pas c'est lors de la connexion...
dans ma base de données au lieu d'avoir "test" (le mot de passe que j'ai mis pour m'inscrire), j'ai une chaine de caractère...ce qui est normal!!!!
mais quand je veux me connecter, je tape mon login, et le mot de passe, et la erreur...
Posté : 15 juin 2009, 17:00
par @rthur
ce qui ne marche pas c'est lors de la connexion...
dans ma base de données au lieu d'avoir "test" (le mot de passe que j'ai mis pour m'inscrire), j'ai une chaine de caractère...ce qui est normal!!!!
mais quand je veux me connecter, je tape mon login, et le mot de passe, et la erreur...
Bonjour,
Pourrais-tu nous donner le code que tu utilises pour vérifier que le mot de passe soit correct?
Tu calcul bien également un md5() du password rentré par l'utilisateur avant de le comparer à ce qu'il y a en bdd?
Posté : 15 juin 2009, 19:51
par Freddo31
ah oui, c'était bien ça!!!
il fallait aussi que j'utilise la fonction au moment de l'envoi des données à la connexion!!!
par contre, le problème qui se pose...enfin, je sais pas si ça en est un...
si jamais on oublie le mot de passe...comment on fait pour le retrouver???
Posté : 15 juin 2009, 20:16
par dunbar
si jamais on oublie le mot de passe...comment on fait pour le retrouver???
Il y a plusieurs solutions, mais par exemple a l'enregistrement de l'utilisateur tu enregistre une adresse mail, et si quelqu'un perd sont mot de passe tu crée un formulaire ou il demande un nv mot de passe, il devrat entrée sont login et tu envoie un nv pass a l'adresse mail qu'il a introduit a l'inscription.
Posté : 16 juin 2009, 14:01
par Freddo31
ok, mais dans ce que tu dis, est-ce que c'est l'utilisateur qui rentre un nouveau mot de passe ou est-ce que c'est mon script PhP qui doit en générer un automatiquement?
Posté : 16 juin 2009, 14:37
par dunbar
ok, mais dans ce que tu dis, est-ce que c'est l'utilisateur qui rentre un nouveau mot de passe ou est-ce que c'est mon script PhP qui doit en générer un automatiquement?
Moi je dirais que tu fais en sorte de générer un nouveu mot de passe, l'utilisateur pourra le changer dans sont profil
Posté : 16 juin 2009, 14:45
par charabia
Le principe de dunbar plus détaillé est le suivant :
Lorsque le membre met son mail, la page est renvoyée vers une autre page de traitement. Cette dernière va faire quoi ?
1. créer un nouveau mot de passe aléatoire
2. un UPDATE du champ password de ta table pour remplacer l'ancien mdp par le nouveau
3. envoyer un mail au membre avec le nouveau mdp
Tu dois donc laisser la possibilité au membre de pouvoir ensuite modifier le mdp aléatoire par le sien (toujours avec un UPDATE).
Posté : 16 juin 2009, 16:51
par dunbar
@charabia effectivement.
Sorry j'aurais du détailler l'idée, mais comme excuse j'étais au bureau

Posté : 16 juin 2009, 18:51
par Aureusms
@charabia effectivement.
Sorry j'aurais du détailler l'idée, mais comme excuse j'étais au bureau

Quoi ! Tu bosses pas!
LOL pour revcenir au débat, j'utiliserai plutôt sha1() au lieu de md5() mais question de choix...
Posté : 16 juin 2009, 20:32
par AB
LOL pour revcenir au débat, j'utiliserai plutôt sha1() au lieu de md5() mais question de choix...
+1
Etant donné que le sha1() a été conçu pour améliorer les performances du md5(), le sha1() est effectivement recommandé si l'on a pas besoin de compatibilité avec des scripts déjà existant.
Posté : 17 juin 2009, 10:02
par agité
LOL pour revcenir au débat, j'utiliserai plutôt sha1() au lieu de md5() mais question de choix...
+1
Etant donné que le sha1() a été conçu pour améliorer les performances du md5(), le sha1() est effectivement recommandé si l'on a pas besoin de compatibilité avec des scripts déjà existant.
Allons allons messieurs on ajoute pas de sel à sa clef ?
Posté : 17 juin 2009, 13:31
par AB
Allons allons messieurs on ajoute pas de sel à sa clef ?
C'est un autre problème, avec ou sans sel, in fine on doit bien choisir un algo de hashage ou de cryptage
Pour ceux que ça intéresse, on parle de la technique du grain de sel ici
http://www.phpfrance.com/forums/voir_sujet-248069-0.php
Posté : 18 juin 2009, 11:02
par Freddo31
bonjour à tous messieurs!!!
tout d'abord, merci de votre aide.
alors j'ai utilisé la fonction md5(), mais au vu de ce que vous avez dis, est ce que cela suffit ou pas?
après, dans ma base de données, je vois pas de MdP en clair, donc je pense que ça doit suffire.
mais j'aimerais comprendre la différen,ce entre md5() et sha1(), l'un crypte, l'autre hashe, donc avec la fonction de cryptage, il y à une "réciprocité", donc possibilité de retrouver le MdP, et avec l'autre, le mot de passe est hashé, donc il faut en générer un nouveau...
personnellement, j'ai utilisé la 2nd méthode (sans savoir si c'est la meilleure ou pas...), et j'ai fais un formulaire de renvoi d'un MdP automatique lorsque l'utilisateur à perdu son MdP, MdP généré aléatoirement par un algo PHP!!!
que choisir?