Utilisation du .htaccess

De Cliss XXI
Sauter à la navigation Sauter à la recherche

Nous abordons ici l'utilisation du .htaccess pour protéger un répertoire : ne pourront visualiser le répertoire protégé que celles et ceux qui s'authentifieront (login + passwd).

  • Nous supposons que l'URL du site est http://monsite.fr
  • Nous voulons protéger le répertoire http://monsite.fr/RepertoirePersonnel

La première chose à faire, est de connaitre le chemin absolu de votre site : par exemple /var/www/monsite (ça peut être un peu plus compliqué que ça). Un bon moyen, quand on n'a pas accès directement à l'hébergement, est de placer le script php suivant (en général, PHP est disponible sur la plupart des hébergements) à la racine de votre hébergement.

<?php
phpinfo();
?>

Si le script s'appelle info.php, il suffit de lancer l'URL http://monsite.fr/info.php par l'intermédiaire du navigateur. Le résultat du script est très verbeux. Seule une information nous intéresse : le DOCUMENT_ROOT. Nous supposerons ici : DOCUMENT_ROOT = /var/www/monsite

La logique du .htaccess est ensuite la suivante :

  • On place le .htaccess dans le répertoire à protéger
  • On indique dans ce .htaccess :
    • que le répertoire est privé
    • qu'on y accède en s'authentifiant (login / MotDePasse)
    • que l'on trouvera les informations d'authentifications, cryptées, dans un autre répertoire
  • Enfin, on n'oublie pas de rendre invisible ce répertoire, aux yeux des autres hébergés, par exemple.

On reprend dans l'ordre :

Écriture du .htaccess

AuthUserFile /var/www/monsite/RepertoirePersonnel/prive/.htpassword
AuthName "Espace privé"
AuthType Basic
Require valid-user
  • La première ligne indique que les informations d'authentifications se trouvent dans /var/www/monsite/RepertoirePersonnel/prive/.htpasswd (on utilise le DOCUMENT_ROOT récupéré plus haut).
  • La deuxième ligne est une chaîne de caractère qui va apparaître à l'internaute, dans une fenêtre d'authentification
  • On place ce .htaccess dans le répertoire à protéger (ici RepertoirePersonnel)

Création du répertoire pour l'authentification

Ici, on crée le répertoire prive, à l'intérieur du répertoire RepertoirePersonnel (ce n'est pas une obligation : vous pouvez également placer ce répertoire à la racine de votre site, ou ailleurs).

Fichier de mots de passe

Il s'agit donc du fichier .htpasswd (ce peut être un autre nom), que l'on place dans le répertoire prive. Pour créer ce fichier, sous Debian GNU/Linux, on utilise la commande htpasswd :

htpasswd -c prive/.htpasswd monlogin

Cette commande crée (option -c) le fichier, en demandant la saisie d'un mot de passe pour l'identifiant monlogin.

Si l'on souhaite donner d'autres identifiants et d'autres mots de passe, on utilise toujours la commande htpasswd, mais en demandant de rajouter les informations dans le fichier : pas d'option -c Pour plus d'aide : man htpasswd

htpasswd prive/.htpasswd login2

Protection du répertoire contenant les mots de passe

2 solutions :

  • changer les droits sur le répertoire, par exemple en n'autorisant l'accès que en lecture écriture, et pour l'utilisateur www-data (ou équivalent) seulement. Cette solution n'est pas toujours possible.
  • protéger le répertoire prive par un .htacces comprenant :
<Files *>
Deny from all
</Files>

Ce .htaccess interdit à tout le monde de visualiser le répertoire dans lequel il est placé