IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Sécurité] Vérifier code crypté en md5


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 40
    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

  2. #2
    Membre Expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Par défaut
    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.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 40
    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

  4. #4
    Membre Expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Par défaut
    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 !

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 774
    Par défaut
    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)

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 40
    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

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 40
    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)

  8. #8
    Membre émérite
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Par défaut
    $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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if( crypt( $mot_de_passe_saisi, $ancien_pass_crypte ) === $ancien_pass_crypte )
    {
        [...]
    }

  9. #9
    Membre émérite
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Par défaut
    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().

  10. #10
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2003
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 274
    Par défaut
    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 ?

  11. #11
    Membre émérite
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Par défaut
    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

  12. #12
    Membre émérite Avatar de Yobs
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    675
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 675
    Par défaut
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. récupéré un code crypté dans un fichier .ini
    Par FracMaster dans le forum Langage
    Réponses: 2
    Dernier message: 27/04/2007, 12h49
  2. sécurité outlook code access
    Par maxeur dans le forum Sécurité
    Réponses: 4
    Dernier message: 31/01/2007, 09h55
  3. [Sécurité] crypt ou md5 ?
    Par Hayabusa dans le forum Langage
    Réponses: 5
    Dernier message: 21/01/2007, 23h46
  4. [Sécurité] Codage mot de passe md5
    Par tilou dans le forum Langage
    Réponses: 6
    Dernier message: 12/04/2006, 11h55
  5. code crypté
    Par apapeur10 dans le forum Langage
    Réponses: 2
    Dernier message: 27/01/2006, 18h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo