Partage
  • Partager sur Facebook
  • Partager sur Twitter

htaccess htpasswd Unauthorized chiffré

Sujet résolu
    19 janvier 2021 à 13:35:41

    Bonjour

    Je suis le cours PHP de mateo
    Je suis au TP

    https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/6964512-tp-un-blog-avec-des-commentaires


    je suis en local
    voici les versions :
    wamp 3.1.4 32bits
    Apache 2.4.35 Port 80- PHP 7.2.10
    MySQL 5.7.23 Port 3306
    MariaDB 10.3.9 Port 3307
    PHP 5.6.38 for CLI (Command-Line Interface)

    /**/
    Connaissant vraiment mal la notion htaccess et htpasswd j'ai suivi les scrupulesement instructions de mateo ici :
    https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/918580-protegez-un-dossier-avec-un-htaccess

    j'ai un dossier admin http://localhost/cours2.08_php/admin/ avec quelques fichiers admin.php, ajouter.php, modifier.php, supprimer.php, et crypt.php

    j'ai rajouter un fichier crypt.php dans le dossier admin avant de finaliser htaccess et htpasswd, on y acces évidement par l'index.php à la racine du site (une fois terminer les instructions pareil pour le fichier admin.php via index.php)

    code crypt.php :

    <?php
    if (isset($_POST['login']) AND isset($_POST['pass']))
    {
        $login = $_POST['login'];
        //$pass_crypte = crypt($_POST['pass'],'$1$'); // On crypte le mot de passe
        $pass_crypte = crypt($_POST['pass']); // On crypte le mot de passe
        //$pass_crypte = $_POST['pass']; // On crypte le mot de passe
        
        echo '<p>Ligne à copier dans le .htpasswd :<br />' . $login . ':' . $pass_crypte . '</p>';
        echo '<p>Au chemin absolu - crypt.php:	'.realpath('crypt.php').'	</p>';
    }
    
    else // On n'a pas encore rempli le formulaire
    {
    	//print_r('');
    print_r('<p>Entrez votre login et votre mot de passe pour le crypter.</p>');
    
    print_r('<form method="post">');
    	print_r('<p>');
    	
    		print_r('Login : <input type="text" name="login"><br />');
    		print_r('Mot de passe : <input type="text" name="pass"><br /><br />');
    		
    		print_r('<input type="submit" value="Crypter !">');
    
    	print_r('</p>');
    print_r('</form>');
    
    }
    ?>


    j'ai juste rajouté une ligne     echo '<p>Au chemin absolu - crypt.php:    '.realpath('crypt.php').'    </p>'; pour avoir le chemin absolu du dossier

    puis une fois que j'aurais lancer une fois, que j'aurais copier les mot de passe chiffré dans htpasswd sur notepad++
    ensuite je sauvegarde .htaccess et .htpasswd dans le dossier /admin

    voici htaccess et htpasswd :
    htaccess:

    AuthName "Page d'administration protégée"
    AuthType Basic
    AuthUserFile "C:/wamp/www/cours2.08_php/ADMIN/.htpasswd"
    Require valid-user
    htpasswd
    admin1:$1$AslLyxOq$qo12AEjCLbEHlkdwmAvER.
    admin2:$1$z9bmjGHE$umNare6j.mELH1sXH6xmy.
    toto1:$1$wi480Msa$K.Vd40Ci5s9tBYMpkJWpd0
    

    par contre quand je met des mot de passe non chiffré,cela fonctionne, j'ai acces au dossier admin et à admin.php

    admin1:admin1
    admin2:admin2
    toto1:toto1
    


    par contre chiffré ça ne passe pas, j'ai l'erreur car je peux que annuler :

    "
    Unauthorized
    
    This server could not verify that you are authorized to access the document requested. Either you supplied the wrong credentials (e.g., bad password), or your browser doesn't understand how to supply the credentials required.
    Apache/2.4.35 (Win32) PHP/7.2.10 Server at localhost Port 80
    "


    /**/

    Je met, une partie des error_log d'apache (celle concernant ce probleme, ce jour), je précise le module auth_basic_module est actif

    [Tue Jan 19 11:42:29.886110 2021] [mpm_winnt:notice] [pid 5520:tid 444] AH00456: Apache Lounge VC15 Server built: Sep 19 2018 15:43:45
    [Tue Jan 19 11:42:29.886110 2021] [core:notice] [pid 5520:tid 444] AH00094: Command line: 'c:\\wamp\\bin\\apache\\apache2.4.35\\bin\\httpd.exe -d C:/wamp/bin/apache/apache2.4.35'
    [Tue Jan 19 11:42:29.888110 2021] [mpm_winnt:notice] [pid 5520:tid 444] AH00418: Parent: Created child process 4484
    [Tue Jan 19 11:42:30.875167 2021] [mpm_winnt:notice] [pid 4484:tid 360] AH00354: Child: Starting 64 worker threads.
    [Tue Jan 19 11:46:33.151024 2021] [mpm_winnt:notice] [pid 5520:tid 444] AH00422: Parent: Received shutdown signal -- Shutting down the server.
    [Tue Jan 19 11:46:35.151139 2021] [mpm_winnt:notice] [pid 4484:tid 360] AH00364: Child: All worker threads have exited.
    [Tue Jan 19 11:46:35.227143 2021] [mpm_winnt:notice] [pid 5520:tid 444] AH00430: Parent: Child process 4484 exited successfully.
    [Tue Jan 19 11:46:38.557333 2021] [mpm_winnt:notice] [pid 5540:tid 436] AH00455: Apache/2.4.35 (Win32) PHP/7.2.10 configured -- resuming normal operations
    [Tue Jan 19 11:46:38.557333 2021] [mpm_winnt:notice] [pid 5540:tid 436] AH00456: Apache Lounge VC15 Server built: Sep 19 2018 15:43:45
    [Tue Jan 19 11:46:38.557333 2021] [core:notice] [pid 5540:tid 436] AH00094: Command line: 'c:\\wamp\\bin\\apache\\apache2.4.35\\bin\\httpd.exe -d C:/wamp/bin/apache/apache2.4.35'
    [Tue Jan 19 11:46:38.560334 2021] [mpm_winnt:notice] [pid 5540:tid 436] AH00418: Parent: Created child process 5764
    [Tue Jan 19 11:46:39.251373 2021] [mpm_winnt:notice] [pid 5764:tid 360] AH00354: Child: Starting 64 worker threads.
    [Tue Jan 19 11:54:05.781913 2021] [auth_basic:error] [pid 5764:tid 892] [client 127.0.0.1:50039] AH01617: user fred: authentication failure for "/cours2.08_php/ADMIN/admin.php": Password Mismatch, referer: http://localhost/cours2.08_php/
    [Tue Jan 19 11:54:06.997983 2021] [auth_basic:error] [pid 5764:tid 892] [client 127.0.0.1:50039] AH01617: user fred: authentication failure for "/cours2.08_php/ADMIN/admin.php": Password Mismatch, referer: http://localhost/cours2.08_php/
    [Tue Jan 19 11:54:18.934665 2021] [auth_basic:error] [pid 5764:tid 892] [client 127.0.0.1:50046] AH01617: user lakota: authentication failure for "/cours2.08_php/ADMIN/admin.php": Password Mismatch, referer: http://localhost/cours2.08_php/
    




    /**/
    alors quand je regarde les trois dernieres lignes,
    ça semble ne pas pointer sur htaccess dans le dossier C:/wamp/www/cours2.08_php/ADMIN/ mais http://localhost/cours2.08_php/

    est ce que ce serait ça ? manque t'il d'autres modules ? voulez vous que je mette httpd.conf

    alors j'ai regardé la fonction php crypt() et le salt, certains posts ici ou ailleurs, mais ne sachant pas trop coder le fichier .htaccess, je suis perdu

    Merci à vous de votre aide

    • Partager sur Facebook
    • Partager sur Twitter
      19 janvier 2021 à 13:40:51

      Ca a été déjà dit je ne sais combien de fois ici : on ne peut pas utiliser crypt sous Windows pour un ".htpasswd" :

      > Utilise le chiffrement crypt() pour les mots de passe. Cette option n'est pas supportée par le serveur httpd sous Windows ou Netware.

      Ouais, bon, je sais, encore un tuto qui ne sera jamais mis à jour ...

      Histoire d'anticiper : md5 ne fonctionnera pas non plus, Apache utilise sa propre variante. Seuls sha1 (obsolète) et bcrypt (cf fonction password_hash en préférant préciser PASSWORD_BCRYPT) si Apache (la bibliothèque APR sur lequel il repose pour être précis) n'est pas trop datée pour ce dernier sont "portables". Et en clair, idem, ce n'est pas portable, ce n'est possible que sous Windows. Le mieux, c'est de faire un test pour voir si bcrypt est supporté, en préférant passer par l'utilitaire htpasswd fourni avec Apache tant qu'à faire. Si ça fonctionne opter pour bcrypt sinon sha1 dans ton cas de figure (ie générer et gérer les mots de passe depuis une application autre qu'Apache)

      -
      Edité par julp 19 janvier 2021 à 16:25:12

      • Partager sur Facebook
      • Partager sur Twitter
        19 janvier 2021 à 17:49:55

        julp a écrit:

        Ca a été déjà dit je ne sais combien de fois ici : on ne peut pas utiliser crypt sous Windows pour un ".htpasswd" :

        > Utilise le chiffrement crypt() pour les mots de passe. Cette option n'est pas supportée par le serveur httpd sous Windows ou Netware.

        Merci à toi, c'est sur je n'avais pas parcouru tous les posts non plus ici juste 5 ou 6 où les problématiques des gens sont parfois différentes, puis ne comprenant pas tout je me suis décidé à mettre mon propre post

        Bon! sinon cela fonctione avec password_hash() et BCRYPT qui semble être l'équivalent de crypt() avec l'algo BLOWFISH mais j'ai arrêté de chercher pour l'instant ^^

        $pass_crypte = password_hash($_POST['pass'], PASSWORD_BCRYPT);// On crypte le mot de passe

        ce que j’utiliserais à l'avenir dans le tuto

        par contre, je suis obligé de vider l'historique pour pouvoir réactiver la demande de mot de passe dans firefox, enfin connexion actives comme un restart du navigateur plutot historiques des formulaires... vider le cache ne suffit pas, sinon il entre quand même dans le dossier admin. Bref je suis loin encore de tout comprendre.

        Sinon je ne suis pas passé par l'utilitaire htpasswd d'apache, j'ai commencé à lire la doc mais ne connaissant pas bien le principe j'ai peur d'oublier, de me gourrer sur des instructions pour l'instant et de ralentir le tuto.
        Je préfère revenir dessus plus tard, exclusivement sur toutes ces notions de sécurité.

        (je laisse quelques temps si d'autres ont des avis, des conseils,... pour mettre en résolu). Voilà :)

        • Partager sur Facebook
        • Partager sur Twitter
          19 janvier 2021 à 18:23:38

          Tu ne pourras rien faire pour annuler une authentification http, le navigateur garde de lui-même en mémoire tes identifiants pour les renvoyer à chacune de tes requêtes (sinon tu devrais les resaisir à chaque page). Le seul moyen pour les lui faire oublier, c'est de le fermer/rouvrir. De mes souvenirs on pouvait forcer certains navigateurs (Opera ?) à "oublier" les identifiants en "forçant" une 401.

          Bref, ça n'a pas d'importance, si tu ne fais que suivre le cours, tu devrais découvrir par la suite les sessions PHP, moyen bien plus souple et évolué pour réaliser une authentification.

          -
          Edité par julp 19 janvier 2021 à 18:25:13

          • Partager sur Facebook
          • Partager sur Twitter
            20 janvier 2021 à 11:51:49

            pas tres pratique en effet pour une section admin
            • Partager sur Facebook
            • Partager sur Twitter

            htaccess htpasswd Unauthorized chiffré

            × 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