Partage
  • Partager sur Facebook
  • Partager sur Twitter

Vérification d'un mot de passe haché stocké cookie

    29 décembre 2018 à 10:52:00

    Bonjour à tous,

    J'ai récemment réalisé l'activité TP créez un espace membres du cours Concevez votre site WEB avec PHP et MySQL : https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/917948-tp-creez-un-espace-membres 

    Dans ce TP, on nous demande de code une page.php permettant la connection d'un utilisateur membre. Pendant la connection, le mot de passe du formulaire est comparé avec le mot de passe haché enregistré dans la base de donnée. Le problème est d'ailleurs évoqué ici : https://openclassrooms.com/forum/sujet/verification-mot-de-passe-php-tp-espace-membres. Jusqu'ici pas de problème.

    J'aimerais permettre l'accès d'une page .php uniquement aux membres du site. Pour cela, j'aurais besoin de comparer à chaque rafraîchissement de la page les données (pseudo, mot de passe) à ceux de la base de données. J'ai lu qu'il fallait enregistrer le mot de passe (en cookie ou en array $_SESSION) en mode hach. Le problème est, que, une fois le mot de passe stocké en mode hach, je ne sais pas comment le comparer au mot de passe hach enregistré dans la base de donnée. 

    Mes questions sont :

    - Faut-il nécessairement stocké le mot de passe en mode hach : Dans un array de session ? Dans un cookie ?

    - Si oui, comment le comparer à celui de la base de donné ?

    - Il y a t'il une méthode plus simple pour procéder ?


    En vous remerciant,

    Maxime



    • Partager sur Facebook
    • Partager sur Twitter
      29 décembre 2018 à 11:53:18

      Bonjour,

      Pour faire court, le plus simple est de hashes le mot de passe avec password_hash() avant de l'enregistrer dans la bdd.

      Ensuite, on le vérifie avec password_verify() (il suffit de le récupérer avec une requête SELECT).

      Par contre, par principe, on ne stocke jamais un mot de passe en session, il suffit de stocker un un pseudo, un id...

      • Partager sur Facebook
      • Partager sur Twitter
        29 décembre 2018 à 14:44:27

        Merci pour ta réponse philodick.

        J'ai réussi à faire ce que tu énonces.

        J'ai mal formulé ma problématique, je vais essayer de mieux l'expliquer :

        Imaginons que le membre de mon site se connecte et coche une case "connection automatique".
        De mon coté, je dois enregistrer son pseudo et son mot de passe dans ses cookies pour une future connection.

        Dans le cours https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/917948-tp-creez-un-espace-membres#/id/r-2178973, on m'explique que l'on doit stocker dans les cookies le pseudo et le mot de passe HASHE.

        Quand le membre arrive sur le site, pour pouvoir le connecter automatiquement je dois tester son pseudo et son mot de passe. Je me retrouve alors à devoir comparé deux mots de passe HASHE (celui des cookies et celui de la base de données). Comment fait-on cela ? 

        • Partager sur Facebook
        • Partager sur Twitter
          29 décembre 2018 à 15:12:57

          Alors déjà on ne stock pas le mot de passe même hash en cookie. Pour le système de connexion automatique tu va juste ajouté un champs en base de donnée, token par exemple qui sera null par défaut. Quand la personne clique sur "Se souvenir de moi" à la connexion, tu va générer un token (un uuid par exemple en hash avec un salt par exemple) et tu va le sauvegarder en base de données. Dans le cookie tu va y mettre par exemple le nom "rememberme" et la valeur ce sera par exemple "id---token".

          Sur toutes les pages de ton site après le session_start() tu pourra faire un truc du genre : Si pas de session['auth'] mais qu'il y a un cookie['rememberme'] alors on check. Tu récupère l'id et le token et tu as juste à check si une personne existe avec ces 2 informations là. Si c'est bon tu régénère un autre token que tu update en base et tu créer la session comme pour la connexion (avec les informations venant de la bdd ou juste l'id au moins).

          • Partager sur Facebook
          • Partager sur Twitter
            29 décembre 2018 à 21:26:34

            Bonjour Quenti77,

            Merci pour ta réponse.

            J'ai bien compris l'interêt de ta méthode et je vais essayer !
            Cette méthode a un nom ? une référence ? Ou c'est une méthode usuelle ? 
            Merci à vous deux pour vos réponse,
            A bientôt
            Maxime
            • Partager sur Facebook
            • Partager sur Twitter

            Vérification d'un mot de passe haché stocké cookie

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown