Comment restreindre l'accès à un dossier de votre site avec les fichiers .htaccess et .htpasswd

Nous allons voir ici comment autoriser l'accès à un dossier présent sur votre serveur web aux seuls utilisateurs ou administrateurs possédant des identifiants de connexion.
Ce tuto va vous indiquer comment créer et paramètrer les fichiers .htaccess et .htpasswd et les installer sur votre serveur web.

Ces articles sont susceptibles de vous intéresser aussi :

Personnaliser ses pages d'erreurs

Creer un site

Effets visuels pour vos liens

Pourquoi mettre en place un .htaccess et .htpasswd

Ce système de sécurisation est utiliser pour restreindre l'accès à certaines parties de votre site aux seuls utilisateurs disposant des identifiants et mots de passe valide. Les utilisations sont diverses :

  • sécuriser des espaces d'administration de votre site
  • autoriser l'accès à certaines pages dont vous souhaitez dévoiler le contenu uniquement aux visiteurs que vous aurez préalablement choisi
  • réserver certains téléchargements à une catégorie de visiteurs
  • créer des "espace client" simples

Une fois configuré et installé, le résultat ressemble à ca :

utilisateur :            TestVisiteur ( !!! respectez les majuscules)

Mot de passe :        jaccede

 

Le fichier .htaccess

Nous allons créer, avec votre editeur de code ou de texte, un fichier contenant des instruction serveur. Ces dernières lui indiquerons que l'accès à ce dossier est limité aux seules personnes disposant d'identifiants de connexion.
Ouvrez un nouveau document et collez y ce code

AuthName "l'acces a cette page est securise"
AuthType Basic
AuthUserFile "/chemin_absolu_du_dossier/.htpasswd"
Require valid-user

"AuthName", c'est le texte qui invitera le visiteur à saisir ses identifiants de connexion

"AuthUserFile" est le chemin absolu menant à votre fichier .htpasswd contenant la liste des utilisateurs autorisés et leur mot de passe respectif.

Le chemin absolu, mais comment je trouve ça ?

C'est très simple, vous allez, avec votre éditeur de code, créer un nouveau document .php que vous placerez par la suite dans le répertoire à protéger.
Dans ce fichier, collez y juste ce petit bout de code :

<?php echo realpath('chemin.php'); ?>

enregistrez votre fichier sous "chemin.php", dans le dossier à protéger, et uploader le sur votre serveur.

Une fois en ligne, allez chercher ce dossier avec votre navigateur Web en entrant son url. La page affichée, vous verrez une ligne vous indiquant le "chemin absolu" de ce fichier.
Recopiez la dans votre fichier .htaccess, à la ligne "AuthUserFile", en replaçant "chemin.php" par ".htpasswd". Au final, votre fichier .htaccess doit ressembler à ça :

AuthName "l'acces a cette page est securise"
AuthType Basic
AuthUserFile "/home/f2552369/htdocs/espacesecurise/.htpasswd"
Require valid-user

Cet un exemple, votre chemin absolu sera forcement différent !


Enregistrez votre fichier en .htaccess dans le dossier à protéger ; sans autres extensions, pas de .htaccess.html ou .php, juste .htaccess !

Votre .htaccess est terminé, passons à l'identification.

 

Le fichier .htpasswd

Ouvrez maintenant un nouveau document avec votre editeur de code ou de texte.
Nous allons y définir les noms d'utilisateur autorisés et le mot de passe de chacun sous ce format

utilisateur:mot_de_passe

Imaginons que vous ayez autorisé 3 personnes à accéder aux fichiers de ce dossier, votre fichier .htpasswd ressemblera à ça :

maurice:cahiervert
thomas:cahierrouge
bertrand:cahierBleu

Une chose important à savoir, les majuscules et minuscules ont une importance dans la saisie de l'identifiant et du mot de passe, une majuscule saisie en minuscule fera échouer l'identification.
Par exemple, bertrand doit absolument saisir "cahierBleu" et pas "cahierbleu", sous peine de voir son accès refusé.

Une fois la liste des personnes autorisées établie, enregistrez ce fichier en .htpasswd (comme pour le .htaccess) dans le dossier à protéger.

Il est possible que vous soyez obligé de crypter vos mot de passe pour un bon fonctionnement, tout dépend de votre serveur.
Dans ce cas, votre fichier .htpasswd conservera la meme syntaxe, les identifiants resterons les memes, mais les mots de passe seront affichés comme language crypté. Votre fichier aura alors cette apparence :

maurice:4kOst.x.7IuFw
thomas:4kbBKJ2Q7a92.
bertrand:4kW64BMb5dcs6

Comment crypter vos mots de passe ?
Voici le lien d'un crypteur mis au point par Mathieu Nebra connu sous le pseudo "M@teo21" , administrateur du Site du Zéro :

Crypter son mot de passe

Ce cryptage à une autre utilité : si quelqu'un accède à votre ordinateur, il ne sera pas en mesure de déchiffrer vos mot de passe.

Ne tremblez pas en vous demandant comment retenir ce code ! Au moment de l'authentification, vous entrerez votre mot de passe en écriture "normale". Maurice, par exemple, entrera "cahiervert", meme si son code à été crypté.

Sachez que les liens redirigeant vers ce dossier protégé ne doit pointer ni vers le .htaccess ni vers le .htpasswd, le navigateur demandera une authentification à partir du moment ou l'utilisateur tentera d'accéder à un fichier contenu dans le dossier où vous avez enregistré ces 2 fichiers. Dans l'exemple de ce tuto, vous tentez d'accéder au fichier "demo-htaccess.html" situé dans le dossier "espace_protege" contenant les fichier .htaccess et .htpasswd.

Au final, votre dossier doit ressembler à ca :

Tester

Pour tester le bon fonctionnement de la securisation de votre dossier vous avez 2 options :

  • Transferer le dossier sur votre serveur web et le tester en fonctionnement final
  • Installer WAMP sur votre ordinateur afin d'effectuer le test en local (ne crypter pas vos mot de passe)

Sachez qu'une verification en local sans recours à un logiciel tiers ne fonctionnera pas, les .htaccess et .htpasswd étant en language serveur.