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 :

Comparaison de mots de passe( en base et celui saisi)


Sujet :

Langage PHP

  1. #1
    Débutant
    Inscrit en
    Avril 2005
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 469
    Points : 106
    Points
    106
    Par défaut Comparaison de mots de passe( en base et celui saisi)
    Bonjour,

    Pour gérer la sécurité de mon application, j'ai deux formulaires , l'un pour la "création de comptes", l'autre pour la "connexion".

    Quand j'enregistre un compte, j'utilise md5 pour sauvegarder le mot de pasee en base. dans le formulaire(
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" name="pwd" />
    ).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pwdbase=md5($_POST['pwd']);
    Au moment de vérifier si la connexion a réussi(
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="password" name="pwdsasi" />
    ), je refais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pwdsaisi=md5($_POST['pwdsasi']);
    et quand je compare les deux( $pwdbase=$pwdsaisi), c'est jamais égal.
    et aussi quand j’affiche le $pwdsaisi , j'ai jamais le même code présent en base.

    Comment faire pour retrouver le même code crypté ?

    md5 n'est-il pas irréversible ?

    Merci de vos solutions.

    Cordialement

  2. #2
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    salut,

    la comparaison c'est "==" et non "="

    Donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if( $pwdbase == $pwdsaisi )
    {
      //actions
    }

  3. #3
    Débutant
    Inscrit en
    Avril 2005
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 469
    Points : 106
    Points
    106
    Par défaut
    Bonjour,

    Ok c'est une faute de frappe mais le problème ne se situait pas là-bas.

    En fait, le problème vient du fait qu' au moment de vérifier si la connexion a réussi, je dois faire à nouveau le hash du mot de passe saisi pour le comparer à la valeur du mot de passe présent en base.

    Et le résultat du hash du mot de passe saisi n'est pas le même que celui présent en base alors c'est le même texte de mot de passe saisi.

    Exemple : à la vérification avec type="password",
    je saisi css -> j'ai sha1("css")=2f84417a9e73cead4d5c99e05daff2a534b30132".

    NB : j'envoie les données par ajax.

    alors qu'à la la saisie :, j'ai en enregistré à la base : 2f84417a
    avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO budget_admin (bogin , bpwd , bniveau )
    VALUES ("'.$dlogin.'", "'.sha1($dmp).'" , "'.$dniveau.'")
    $dmp est le mot de passe attribué.

    Où se situe le problème selon vous ? les deux codes hashés sont pas les mêmes du tout

    Merci de vos solutions


    Cordialement.

  4. #4
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Salut,

    tu dois utiliser une méthode de chiffrement pour l"insertion à la base et durant la comparaison.
    A priori tu utilises sha1 pour insérer et md5 pour la comparaison ce qui n'est pas très logique.

  5. #5
    Débutant
    Inscrit en
    Avril 2005
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 469
    Points : 106
    Points
    106
    Par défaut
    Bonjour,

    là actuellement j'utilise sha1 pour l'insertion et pour la comparaison.

    ça devrait marcher car j'utilise la même fonction de cryptage mais c'est pas le cas ????

    Merci des solutions.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 343
    Points : 392
    Points
    392
    Par défaut
    Quel est exactement ton code?
    Attention sha1 a pour second paramètre raw_output qui est par défaut à false et sha1 donne 40 caractères, sinon 20.

  7. #7
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    Ton problème vient peut-être de la longueur du champ "bpwd" dans ta bdd ; si tu fais un echo de sha1($dmp), c'est déjà tronqué ?

  8. #8
    Débutant
    Inscrit en
    Avril 2005
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 469
    Points : 106
    Points
    106
    Par défaut
    Bonjour,

    Tout à fait c’était ma déclaration du champ mot de passe en base de données.
    Je l'avais mis varchar(10) et c'etait tronqué lors de l'insertion , du coup la comparaison était toujours fausse.

    maintenant que je l'ai mis mis varchar(50) ça trouve le bon mot de passe.

    Voila le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    $requete = mysql_query('SELECT mpwd FROM budget_admin WHERE login = "'.$_POST['login']);
    $data = mysql_fetch_assoc($requete);
     
    if($data['mpwd'] == sha1($_POST['password']) //membre connecté
    else //mot de passe incorrect
    J’espère que c'est fiable ?

  9. #9
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    J’espère que c'est fiable ?
    Moi, je fais pareil pour les mdp sauf que j'utilise md5 au lieu de sha1...

  10. #10
    Débutant
    Inscrit en
    Avril 2005
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 469
    Points : 106
    Points
    106
    Par défaut
    Bonjour,

    OK d'accord.

    Donc je peux m'en servir.

    merci pour les réponses.


    Cordialement.

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

Discussions similaires

  1. comparaison de mot de passe avec la base de données
    Par ayaditch dans le forum NetBeans
    Réponses: 2
    Dernier message: 09/06/2010, 09h56
  2. Mot de passe pour base de donnees access
    Par foufou6825 dans le forum Access
    Réponses: 1
    Dernier message: 27/08/2006, 19h21
  3. [Delphi] Lecture et comparaison de mots de passe
    Par Jayceblaster dans le forum Langage
    Réponses: 6
    Dernier message: 22/04/2006, 12h21
  4. Mot de passe niveau base de donneé oublié
    Par simbonikala dans le forum Access
    Réponses: 2
    Dernier message: 19/01/2006, 12h45
  5. Encodage et comparaison de mot de passe
    Par SuperCed dans le forum Sécurité
    Réponses: 4
    Dernier message: 27/05/2005, 12h01

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