TUTORIELS 
Protéger les répertoires d'un site Web sous Apache
Apprendre à utiliser Apache et les fichiers .htaccess, .htpasswd pour sécuriser les répertoires d'un site.  (26 juin 2001)
 

L'objet de ce tutoriel est d'apprendre à protéger par mot de passe, sous serveur Apache, certains répertoires ou fichiers contenant des données à accès restreint. L'approche choisie privilégie l'utilisation des fichiers .htaccess et .htpasswd, mais une protection de même nature peut être obtenue à l'aide d'un script en Perl, Javascript ou PHP.

Le fichier .htaccess se place dans le répertoire contenant les documents à protéger (il peut y avoir autant de fichiers .htaccess que de répertoires), et précise notamment le chemin du fichier .htpasswd contenant le ou les mots de passe. La protection s'applique à la totalité du répertoire et récursivement aux sous-répertoires. Notons que toutes les modifications que l'on apporte au fichier .htaccess peuvent être réalisées également par l'intermédiaire des fichiers httpd.conf et access.conf (dans ces deux derniers cas, on spécifie répertoires et fichiers à protéger).

Le fichier .htaccess
Un fichier .htaccess typique ressemblera à ceci (on suppose un serveur sous Unix):

AuthUserFile /home/web/.htpasswd
AuthName Restricted Area
AuthType Basic
<limit GET POST>
require valid-user
</limit>

La mention "Restricted Area" apparaîtra sur la boîte de dialogue invitant à saisir identifiant et mot de passe.
Seuls les utilisateurs dont l'identification a réussi pourront accéder (par une requête de type GET ou POST) à un document protégé.
Le fichier .htpasswd correspondant contient les identifiants et le mot de passe. Pour créer ce fichier, on utilise la commande htpasswd. On écrira (ici depuis le répertoire /home/web/, sur le serveur donc, ce qui implique au moins un accès Telnet) en tant que root:

htpasswd -c .htpasswd username

puis on entrera le mot de passe à l'invite correspondante (il sera demandé deux fois). Ajouter un utilisateur une fois que le fichier est créé se fera par:

htpasswd .htpasswd username


Le fichier .htpasswd contiendra des lignes du type:

username:motdepassecrypté

qu'il suffira d'effacer pour supprimer un utilisateur.

Il est préférable que le fichier .htpasswd soit dans le dossier parent de la racine du site concerné (afin que les identifiants - username - ne soient pas visibles depuis le web).

Le fichier httpd.conf
Si l'on préfére modifier ce fichier au lieu des .htaccess des répertoires à protéger, on ajoutera par exemple les lignes suivantes:

<directory /home/web/htdocs/restricted>
  AuthName "Restricted Area"
  AuthType Basic
  AuthUserFile /home/web/.htpasswd
  require valid-user
</directory>

et ainsi de suite pour différents répertoires le cas échéant. Notons qu'après toute modification de httpd.conf, Apache doit être relancé pour que celle-ci soit prise en compte.

Pour finir, deux remarques: le fichier contenant identifiants et mots de passe peut prendre n'importe quel nom: on aurait pu tout aussi bien l'appeler .motdepasse au lieu de .htpasswd; de plus, ne pas oublier sous Unix de placer les droits d'accès de ce fichier de manière appropriée (lecture seule).

 
[ Jérôme Morlon JDNet
 
Accueil | Haut de page