Limiter l'accès par htaccess, htpasswd
Il est parfois nécessaire de protéger l’accès à 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 d’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érale « 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/linux 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
![:x](https://www.developpez.net/forums/images/smilies/icon_mad.gif)
3l0HLu5v6mOF
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 suivant proposant le cryptage d’un mot de passe.
http://home.golden.net/generator/ (il génére le couple login/password)
http://www.ovh.net/cgi-bin/crypt.pl
le fichier .htpasswd étant terminé, il suffit de le mettre à ça place (celle définie dans le fichier .htaccess).
Partager