Protéger un répertoire de son site


L'objet de cette page est d'apprendre à protéger par mot de passe, sous serveur Apache, certains répertoires ou fichiers contenant des données à accès restreint.

Nous étudierons plus particulièrement l'utilisation des fichiers .htaccess et .htpasswd qui sont les fichiers qu'utilise le serveur de type Unix.

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.

Le fichier .htaccess

Un fichier .htaccess ressemblera à ceci sur un serveur Unix:


AuthUserFile /home/virtual/siteXX/fst/var/www/.htpasswd
AuthGroupFile /home/virtual/siteXX/fst/var/www/.htgroup
AuthName "Nom du répertoire"
AuthType Basic
<Limit Get>
require group  nom du groupe
</Limit>

SiteXX = le numéro d'ordre du site ex: site23
require group = (le nom du groupe auquel est rattaché .htaccess

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é.

              Générer automatiquement un fichier htaccess

Le fichier .htpassword

Le fichier .htpasswd correspondant contient les identifiants et le mot de passe. Pour créer ce fichier, on utilise la commande htpasswd, ce qui nécessite un acces telnet (improbable chez la plupart des hébergeurs grand-public. Il y a un autre moyen. Créer de toute pièce le fichier .htpasswd et l'uploader sur le site.
Pour créer le fichier .htpasswd on utilise l'éditeur de texte Notepad qui se trouve en standard sur votre PC.
On saisi l'identifiant suivi de : et du mot de passe que l'on aura pris le soin de crypter avec l'utilitaire que Gilmir.com met à votre disposition

Un fichier .htpasswd ressemblera à ceci sur un serveur Unix:
bidule:tarentule
ce qui donne ceci après avoir crypté le mot de passe

bidule:li0NProEZw5lY

bidule est le login et ce qui suit après les deux tirets : est le mot de passecrypté.

Pour crypter un mot de passe, vous pouvez utiliser la fonction crypt de Perl, ce qui a été fait ici pour le formulaire:

Utiliser la fonction Crypt de Perl