Page 1 sur 1

Problème pour se connecter à une zone membre (cyptage mdp)

Posté : 04 mai 2010, 16:11
par Benamour Jr
Bonjour,

Je viens de remarquer quelque chose de très bizarre... Avec mon pseudo (Benamour) et le mot de passe que j'ai enregistré lors de mon inscription à la zone membre de mon site (xxx), je parviens à me connecter. Ok, jusqu'à là c'est parfait, le problème c'est que si j'essaie de me connecter avec le mot de passe xxx7 je parviens aussi à me connecter ! J'ai fait le test avec un pseudo "Test" et un mot de passe "test" et là je ne parviens pas à me connecter avec le mot de passe "test7". o.O ?

Voici comment je procède pour crypter le mot de passe :

Lors de l'enregistrement du nouveau compte, je procède comme suite :
$mdp = crypt($_POST["mdp"], $_POST["pseudo"]);
Je crypte donc le mot de passe en fonction du mot de passe et du pseudo renseigné par le visiteur et j'enregistre le résultat dans ma table.

Puis, une fois que le membre veut se connecter je procède comme suite :
$mdp_crypted = crypt($_POST["mdp"], $_POST["pseudo"]);
if ($mdp_crypted != $mdp)
Donc ici je récupère dans la table le mot de passe du membre ($mdp) et je le confronte au cryptage du mot de passe et du pseudo qu'il a rentré pour se connecter. Si les deux résultats sont différents, il n'a pas accès au compte.

Ou se trouve mon erreur ? En fait j'ai fait le test, et le cryptage associé à mon pseudo me renvois la meme valeur que mon mot de passe soit xxx ou xxx7 (mon mot de passe n'est bien évidemment pas xxx mais quelque chose du style ChOcOlAt7*@.

Voilà, j'espère que l'un de vous pourra m'aider, j'en ai marre de me gratter la tête toutes les 5 minutes :p

Re: Problème pour se connecter à une zone membre (cyptage mdp)

Posté : 04 mai 2010, 16:19
par macgawel
RTFM

Extrait de la doc PHP sur la fonction crypt() :
crypt(), lorsqu'elle est utilisée avec le chiffrement standard DES, retourne le salt dans les deux premiers caractères de la chaîne retournée. Elle n'utilise que les 8 premiers caractères de str, ce qui fait que toutes les chaînes plus longues, qui ont les mêmes premiers 8 octets retourneront le même résultat (tant que le salt est toujours le même).
En clair, SI la fonction crypt() utilise le DES; chocolat et chocolat123456789 retournent le même résultat...

Re: Problème pour se connecter à une zone membre (cyptage mdp)

Posté : 04 mai 2010, 16:28
par Genova
N'utilise pas crypt(), contente toi plutôt de hasher tes mots de passe.

Lors de l'inscription d'un utilisateur tu stockes le md5 de son mot de passe avec la fonction md5(), ensuite lors de l'authentification du user tu te contentes de vérifier si md5($_POST['password']) correspond à la valeur stockée en base de donnée :) C'est le système utilisé par la plupart des sites. Bon à la limite utilise plutôt sha1() que md5() mais bon ^^

Re: Problème pour se connecter à une zone membre (cyptage mdp)

Posté : 04 mai 2010, 16:31
par visualight
Il paraît que SHA1 est mieux que le MD5 ... peut être ai-je mal été informé ?
http://php.net/manual/fr/function.sha1.php

Re: Problème pour se connecter à une zone membre (cyptage mdp)

Posté : 04 mai 2010, 16:52
par Benamour Jr
Merci à tous, c'est effectivement parce que mon mot de passe comportait plus de 8 caractères, la prochaine fois j'éviterais de survoler la doc :mrgreen:
Je vais utiliser sha1 (plus sécure que md5 comme il donne un mdp de 40 caractères au lieu de 32).

Re: Problème pour se connecter à une zone membre (cyptage mdp)

Posté : 04 mai 2010, 17:09
par stealth35
Il paraît que SHA1 est mieux que le MD5 ... peut être ai-je mal été informé ?
http://php.net/manual/fr/function.sha1.php
y'a des collision dans les 2, les failles on était trouver y'a plus longtemp dans le MD5 que dans le SHA1, maintenant on faire du SHA256 voir 512, mais ce que me dérange c'est que c'est pas implémenter dans mysql contrairement au 2 autres :?