|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2006 Messages : 38 ![]() |
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 |
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() ![]() Inscription : avril 2003 Messages : 3 286 ![]() |
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.
__________________
Tous mes tutoriels Pas de questions techniques par MP ni par e-mail, merci ! Prolog rules! |
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2006 Messages : 38 ![]() |
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 |
|
|
00
|
|
|
#4 |
|
Expert Confirmé
![]() ![]() Inscription : avril 2003 Messages : 3 286 ![]() |
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 !
__________________
Tous mes tutoriels Pas de questions techniques par MP ni par e-mail, merci ! Prolog rules! |
|
|
00
|
|
|
#5 |
|
Membre émérite
![]() |
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 |
|
|
00
|
|
|
#6 |
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2006 Messages : 38 ![]() |
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 |
|
|
00
|
|
|
#7 | |||
|
Membre chevronné
![]() |
Citation:
Pour vérifier ton mot de passe il faut donc faire : Code :
|
|||
|
|
00
|
|
|
#8 |
|
Membre régulier
![]() |
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 ?
|
|
|
00
|
|
|
#9 |
|
Membre chevronné
![]() |
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().
|
|
|
00
|
|
|
#10 |
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2006 Messages : 38 ![]() |
"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) |
|
|
00
|
|
|
#11 | |
|
Membre chevronné
![]() |
Citation:
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
|
|
|
|
00
|
|
|
#12 |
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2006 Messages : 38 ![]() |
WOW, un "===" ... c normal ça? (je précise que je suis un pur novice en progra)
|
|
|
00
|
|
|
#13 | |
|
Membre émérite
![]() |
Citation:
__________________
Chaque problème a une solution, mais il est plus facile de répondre si le problème est correctement renseignés |
|
|
|
00
|
|
|
#14 | |
|
Expert Confirmé
![]() ![]() Inscription : avril 2003 Messages : 3 286 ![]() |
Citation:
__________________
Tous mes tutoriels Pas de questions techniques par MP ni par e-mail, merci ! Prolog rules! |
|
|
|
00
|
|
|
#15 | |
|
Membre émérite
![]() |
Citation:
=== 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 |
|
|
|
00
|
|
|
#16 | |
|
Expert Confirmé
![]() ![]() Inscription : avril 2003 Messages : 3 286 ![]() |
Citation:
__________________
Tous mes tutoriels Pas de questions techniques par MP ni par e-mail, merci ! Prolog rules! |
|
|
|
00
|
|
|
#17 |
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2006 Messages : 38 ![]() |
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?????? |
|
|
00
|
|
|
#18 |
|
Membre chevronné
![]() |
il FAUT utiliser des guillements simples avec PHP. Sinon il remplace tes $1 par le contenu de la variable "$1".
|
|
|
00
|
|
|
#19 |
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2006 Messages : 38 ![]() |
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... |
|
|
00
|
|
|
#20 |
|
Membre chevronné
![]() |
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. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com