Il est parfois nécessaire de protéger l’accès à une page, à un répertoire sur un serveur web (ex : répertoire d’administration, contenant des données sensibles) afin d’éviter que n’importe qui puisse y accéder.
Il y a différentes méthodes, ont peut avoir recourt à des langages comme le PHP, ASP, PERL …), mais la méthode la plus simple est d’utiliser le mécanisme de protection du serveur apache.
C’est-à-dire effectuer une protection à l’aide des fichiers .htaccess et .htpasswd. On estime ici que l’on n’a pas accès au fichier de configuration http.conf, ce qui est le cas chez un fournisseur d’accès.
Le fichier .htaccess est un fichier texte contenant des commandes Apache.
Voici un exemple :
AuthUserFile /home/login/admin/.htpasswd AuthGroupFile /dev/null AuthName "Veuillez vous identifier" AuthType Basic <Limit GET POST> require valid-user </Limit>
Quelques explications :
AuthUserFile : c’est le nom et le chemin d’accès du fichier qui contiendra les noms des utilisateurs et les mots de passe associés. Ce chemin doit partir de la racine du site.
Ici, les mots de passe seront dans /home/login/admin/.htpasswd.
On peut, et il est même conseillé de choisir un autre nom que .htpasswd pour le fichier qui contiendra le couple utilisateur/mot de passe.
Le point précédent le nom de fichier permettra de cacher (au sens Unix /linux du terme).
Il est également recommandé de mettre le fichier des mots de passe en dehors de l’arborescence du site si l’on en a la possibilité.
AuthGroupFile : permet de définir un droit d’accès à un groupe d’utilisateur.
Cette solution n’est que rarement utilisée pour un site Web.
Le reste du temps il pointe vers /dev/null. Il faut que cette ligne soit présente.
AuthName : c’est le texte qui apparaîtra dans la fenêtre demandant le mot de passe.
AuthType : L’authentification est en général « basic ». Les mots de passe sont alors envoyés en clair sur le réseau.
Pour sécuriser davantage l’accès, on peut utiliser la méthode d’authentification « digest » qui crypte les mots de passe en MD5 . Ce système n’est supporté que par certains navigateurs.
Limit : C’est ici qu’on va indiquer ce qui est autorisé et interdit dans le répertoire.
Les commandes GET et POST indiquent la récupération de pages web et la réponse à certains formulaires. POST est utilisé pour autoriser l’upload de fichiers sous le protocole http
Require valid-user : accepte tous les utilisateurs qui ont un login : mot de passe dans .htpasswd.
Require herve jacques : limite l’accès à un ou plusieurs utilisateurs précis, ici herve et jacques. A noter que les utilisateurs sont séparés par des espaces.
Une fois le fichier .htaccess créé, il faut le placer dans le répertoire à protéger. Maintenant il nous faut créer le fichier .htpasswd
Sous unix et inux il existe un l’utilitaire : htpasswd. Voici un exemple d’utilisation :
htpasswd -c .htpasswd herve
après validation Linux vous demande un mot de passe, puis une deuxième fois pour confirmation.
Si l’on édite le fichier .htpasswd obtient une ligne du style :
herve:x3l0HLu5v6mOF
ce qui correspond au nom d’utilisateur (login) et son mot de passe crypté. Il y aura une ligne pour chaque utilisateur.
Si l’on n’a pas accès à l’utilitaire htpasswd, on peut se rendre sur l’un des deux sites suivants proposant le cryptage d’un mot de passe.
http://home.golden.net/generator/ (il génère le couple login/password)
Le fichier .htpasswd étant terminé, il suffit de le mettre à ça place (celle définie dans le fichier .htaccess).