Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/05/2006, 18h37   #1
Candidat au titre de Membre du Club
 
Inscription : mai 2006
Messages : 38
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 38
Points : 10
Points : 10
Par défaut [Sécurité] Vérifier code crypté en md5

Bonjour, j'utilise actuellement la protection de certains dossiers par fichier htaccess. Pour que mes utilisateurs puissent s'inscrire, je crypte leur mot de passe en md5 et je l'enregistre dans le dit fichier... seuleument j'aimerais pouvoir utiliser des mots de passe cryptés ailleurs que dans un fichier htaccess (p.ex. une base de données). S'il est facile de crypter et "quasi-théoriquement" impossible de décrypter le md5, il doit cependant bien y avoir moyen de comparer le mot de passe émis par l'utilisateur et la version cryptée dans la base de donnée (un problème de somme modulo? je ne sais pas...) comment s'y prend-t-on? Existe-t-il une commande qui permet une telle comparaison?

Merci d'avance
Vigon
vigon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2006, 18h42   #2
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Il suffit de crypter le mdp que t'envoie l'utilisateur... La même manip que lorsque tu rentres le mdp dans la base à l'inscription, sauf qu'après tu ne fais que comparer.
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2006, 12h38   #3
Candidat au titre de Membre du Club
 
Inscription : mai 2006
Messages : 38
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 38
Points : 10
Points : 10
Par défaut je dois être lent...

bon je crois que je dois être lent à la détente... mais je ne saisis pas...
En fait, lorsque je code un mot de passe en md5, prenons par exemple "motdepasse" ça me donne un résultat différent à chaque fois, ce qui me semble logique. (dans cet exemple ça me donne une fois $1$GZtf2xqc$DDOmyI2FXllH1DtQieW./0

et une autre fois
$1$YMspuFRm$D6uf6GgJGzr5WcYLStz1X.

c'est précisément cette "comparaison" que je n'arrive pas à faire
si je mets un simple "if($mot_de_passe_test==$mot_de_passe_enregistre) je pense que ça ne marchera pas...?

comment faire cette comparaison? merci d'avance

Vig
vigon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2006, 12h43   #4
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Non. md5 (comme tous les algos de hash) te donnera toujours le même résultat normalement. Sinon, aucun intérêt...
Attention aux majuscules !
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2006, 12h45   #5
Membre émérite
 
Inscription : juillet 2005
Messages : 775
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : juillet 2005
Messages : 775
Points : 858
Points : 858
Envoyer un message via AIM à ouatmad Envoyer un message via MSN à ouatmad Envoyer un message via Yahoo à ouatmad
pourtant ça marchera.
supposons le mot de passe crypté de l'user $mypass; lorsque l'utilisateur saisi un mot de la passe tu effectue la vérif comme suite
if (md5($pass_saisi)==$mypass)
__________________
Les hommes naissent et demeurent libres et egaux en dignité et en droit. Les distinctions sociales ne peuvent etre fondées que sur l'utilité commune. Article 1 droits et de l'homme et du citoyen. 1789
ouatmad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2006, 13h13   #6
Candidat au titre de Membre du Club
 
Inscription : mai 2006
Messages : 38
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 38
Points : 10
Points : 10
Par défaut non décidément non...

bon je vais essayer d'être encore plus précis... voici un exemple que j'utiliise
<?php
echo $_POST['nom'].":".crypt($_POST['pass']);
?>

p-e que ce qui fait la différence c'est que je suis hébergé (honte à moi) par Lycos (membres.lycos.fr), je sais pas, peut-être faudrait-il que je fixe la base du chiffrement? bizarre... mais vraiment j'obtiens à chauqe fois des réusltats différents, malgré que j'utilise ET le même login ET le même mot de passe.

J'utilise le même code pour enregistrer mon fichier htpassword et ça marche très bien! (je veux dire mes utilisateurs, une fois enregistrés n'ont aucun mal à se connecter...)

je suis perplexe

VIG
vigon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2006, 13h14   #7
Membre chevronné
 
Avatar de Kioob
 
Olivier Bonvalet
Inscription : septembre 2004
Messages : 550
Détails du profil
Informations personnelles :
Nom : Olivier Bonvalet
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : septembre 2004
Messages : 550
Points : 723
Points : 723
Envoyer un message via MSN à Kioob
Citation:
$1$GZtf2xqc$DDOmyI2FXllH1DtQieW./0
vu la tronche du résultat, tu as utilisé la fonction crypt(), qui insère un "salt" dans l'algo.

Pour vérifier ton mot de passe il faut donc faire :
Code :
1
2
3
4
if( crypt( $mot_de_passe_saisi, $ancien_pass_crypte ) === $ancien_pass_crypte )
{
    [...]
}
Kioob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2006, 13h15   #8
Membre régulier
 
Inscription : décembre 2003
Messages : 170
Détails du profil
Informations personnelles :
Âge : 31
Localisation : Belgique

Informations forums :
Inscription : décembre 2003
Messages : 170
Points : 76
Points : 76
Envoyer un message via MSN à eagleleader
moi j'ai une autre question. Si sur mon site j'enregistre le MDP crypté dans la base de données, comment je fais pour le renvoyer par mail à l'utilisateur si celui-ci a oublié son mot de passe ? => il faudrait le décrypter afin de pouvoir le renvoyer... Quelqu'un a une solution ?
eagleleader est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2006, 13h16   #9
Membre chevronné
 
Avatar de Kioob
 
Olivier Bonvalet
Inscription : septembre 2004
Messages : 550
Détails du profil
Informations personnelles :
Nom : Olivier Bonvalet
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : septembre 2004
Messages : 550
Points : 723
Points : 723
Envoyer un message via MSN à Kioob
Note : je précise que tu as bien raison de procèder ainsi, outre les gains en portabilité (crypt() est un standard sous Unix, et on le retrouve dans la plupart des applications), c'est bien plus "sécurisé" que la méthode bateau du md5().
Kioob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2006, 13h18   #10
Candidat au titre de Membre du Club
 
Inscription : mai 2006
Messages : 38
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 38
Points : 10
Points : 10
Par défaut Au temps pour moi...

"AuthType Basic" je viens de lire ça dans mon htaccess héhé sorry.

Ceci dit, mes mots de passe cryptés commencent bien par $1$... vraiment je m'y perds... c fou parce que mon système fonctionne et moi qui croyais le comprendre, je n'y comprends plus rien... quid? est-il codé en basic ou en md5? (voir les exemple du "motdepasse" en version cryptée ci-dessus)
vigon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2006, 13h19   #11
Membre chevronné
 
Avatar de Kioob
 
Olivier Bonvalet
Inscription : septembre 2004
Messages : 550
Détails du profil
Informations personnelles :
Nom : Olivier Bonvalet
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : septembre 2004
Messages : 550
Points : 723
Points : 723
Envoyer un message via MSN à Kioob
Citation:
Envoyé par eagleleader
moi j'ai une autre question. Si sur mon site j'enregistre le MDP crypté dans la base de données, comment je fais pour le renvoyer par mail à l'utilisateur si celui-ci a oublié son mot de passe ? => il faudrait le décrypter afin de pouvoir le renvoyer... Quelqu'un a une solution ?
tu lui envois un nouveau mot de passe, tout simplement.


Et j'ajouterai même, pour éviter qu'un autre utilisateur remette à zéro le pass d'un autre : tu envoies par mail un lien avec un "jeton", valable 1 seule fois et pendant une courte durée (2 heures par exemple). Si l'utilisateur clique sur le lien, tu lui demande son nouveau mot de passe.

Inconvénient : si la boite mail se fait hacker, pas très utile
Kioob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2006, 13h20   #12
Candidat au titre de Membre du Club
 
Inscription : mai 2006
Messages : 38
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 38
Points : 10
Points : 10
WOW, un "===" ... c normal ça? (je précise que je suis un pur novice en progra)
vigon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2006, 13h20   #13
Membre émérite
 
Avatar de Yobs
 
Inscription : avril 2004
Messages : 675
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : avril 2004
Messages : 675
Points : 808
Points : 808
Envoyer un message via MSN à Yobs
Citation:
Envoyé par eagleleader
moi j'ai une autre question. Si sur mon site j'enregistre le MDP crypté dans la base de données, comment je fais pour le renvoyer par mail à l'utilisateur si celui-ci a oublié son mot de passe ? => il faudrait le décrypter afin de pouvoir le renvoyer... Quelqu'un a une solution ?
Tu réinitialise le mot de passe de l'utilisateur en générant un nouveau lorsque tu l'envoie par email et si besoin tu invite l'utilisateur à le modifier lors de sa première reconnexion.
__________________
Chaque problème a une solution, mais il est plus facile de répondre si le problème est correctement renseignés
Yobs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2006, 13h22   #14
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Citation:
Envoyé par vigon
WOW, un "===" ... c normal ça? (je précise que je suis un pur novice en progra)
"égal et de même type"
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2006, 13h22   #15
Membre émérite
 
Avatar de Yobs
 
Inscription : avril 2004
Messages : 675
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : avril 2004
Messages : 675
Points : 808
Points : 808
Envoyer un message via MSN à Yobs
Citation:
Envoyé par vigon
WOW, un "===" ... c normal ça? (je précise que je suis un pur novice en progra)
== signifie égale à
=== signifie identique à (cad égale et du même type)

Donc oui c'est permis. http://www.php.net/manual/fr/languag...comparison.php

EDIT: grillé pas assez rapide. lol
__________________
Chaque problème a une solution, mais il est plus facile de répondre si le problème est correctement renseignés
Yobs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2006, 13h33   #16
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Citation:
Envoyé par Kioob
Note : je précise que tu as bien raison de procèder ainsi, outre les gains en portabilité (crypt() est un standard sous Unix, et on le retrouve dans la plupart des applications), c'est bien plus "sécurisé" que la méthode bateau du md5().
Perso j'ai un petit faible pour sha, mais je sais pas pourquoi ya pas d'implémentation de sha2 dans la distrib PHP...
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2006, 13h36   #17
Candidat au titre de Membre du Club
 
Inscription : mai 2006
Messages : 38
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 38
Points : 10
Points : 10
Bon, à cas désespéré, réponse désespérante...

Je vais détailler chaque étape de ce que je fais...

Pour cet exple jutiliserai le login "Test" et le mot de passe "raslebol"

Je fais éxécuter le code php suivant:
<?php
echo $_POST['nom'].":".crypt($_POST['pass']);
?>

Qui me retourne: "Test:$1$CyotdHNh$AF5dLq/m/Ww8sZT3vqPmZ1"

Bon mnt, avec le commentaire Kioob, je fais:

<?php
if( crypt( "raslebol", "$1$CyotdHNh$AF5dLq/m/Ww8sZT3vqPmZ1" ) === "$1$CyotdHNh$AF5dLq/m/Ww8sZT3vqPmZ1" )
{echo 'ça marche!';}
else {echo 'ça ne marche PAS';}
?>

et devinez ce qu'il me retourne... ça ne marche PAS! Alors !!! Quoique quesque où quand comment que je fais mal??????
vigon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2006, 13h38   #18
Membre chevronné
 
Avatar de Kioob
 
Olivier Bonvalet
Inscription : septembre 2004
Messages : 550
Détails du profil
Informations personnelles :
Nom : Olivier Bonvalet
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : septembre 2004
Messages : 550
Points : 723
Points : 723
Envoyer un message via MSN à Kioob
il FAUT utiliser des guillements simples avec PHP. Sinon il remplace tes $1 par le contenu de la variable "$1".
Kioob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2006, 13h42   #19
Candidat au titre de Membre du Club
 
Inscription : mai 2006
Messages : 38
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 38
Points : 10
Points : 10
roooooooooh put...... de m..... comment j'ai vraiment trop honte, la pure erreur de débutant! Heureusement qu'on ne travaille qu'avec des pseudos

merci pour l'aide, et vraiment sorry de vous avoir fait perdre votre temps pour une connerie pareille...

jen profite pour dire que c un très bon forum, suis impressioné par la vitesse de réponse...
vigon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2006, 13h44   #20
Membre chevronné
 
Avatar de Kioob
 
Olivier Bonvalet
Inscription : septembre 2004
Messages : 550
Détails du profil
Informations personnelles :
Nom : Olivier Bonvalet
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : septembre 2004
Messages : 550
Points : 723
Points : 723
Envoyer un message via MSN à Kioob
Et bien, à bientôt, sur ce même forum

Eusebius : pour ma part je reste sur crypt(). Donc si je veux un truc "mieux" que MD5, ce sera du blowfish.
Kioob est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h46.


 
 
 
 
Partenaires

Hébergement Web