Protection des répertoires à l'aide des fichiers .htaccess et .htpasswd

Pour protéger le contenu de certains dossier, on peut opter par la création d'un code PHP qui protègerais les fichiers concernés grâce aux inclusions des autres fichiers concernés.
Pour ceux qui ont déjà essayé, le problème se pose lorsque le site commence à avoir plusieurs personnes avec un accès autorisés et lorsque les dossiers à protéger sont multiples.

Le meilleurs moyens à me yeux de protéger une partie de site Internet est d'utiliser les fichiers .htaccess et .htpasswd combinés.
C'est ainsi le serveur Apache qui s'occupe de vérifier les connexions.

Nous allons maintenant décrire les deux fichiers, et apprendre la manière dont ils se codent.

Le fichier .htpasswd :

Le fichier .htpasswd est celui qui contient les mots de passe des utilisateurs.
Pour information, passwd = password soit mot de passe en anglais.
Le fichier se construit de la forme suivante :

utilisateur1:motdepassecrypté
utilisateur2:motdepassecrypté


On entre donc les informations de chacun des utilisateurs sur une ligne, avec le nom d'utilisateur et le mot de passe crypté séparé par le caractère " : ".
Une fois la liste des utilisateurs créée, on la copie dans un fichier appelé .htpasswd.
Attention toute fois aux utilisateurs de Windows, car ce système d'exploitation ne reconnais pas les fichiers commençant par un point " . ", il s'agit en effet du format des fichiers commentés sous Linux, et Microsoft ne fait bien évidement pas preuve de compatibilité.
Pour pouvoir le sauvegarder, il y a donc deux options :
 - Uploader un fichier htpasswd puis le renommer une fois en ligne via le client FTP
 - Enregistrer le fichier sous le nom .htpasswd via un logiciel d'édition tel que Notepad++

Pour vous aider à créer vos fichiers .htpasswd, j'ai créé un outil en ligne qui les génère automatiquement : Création de fichiers .htpasswd.

Le fichier .htaccess :

Le fichier .htaccess est celui qui va définir les règles de protection. Il se construit de la forme suivante :

AuthName "Page protégée !"
AuthType Basic
AuthUserFile /var/www/monsite/.htpasswd
Require valid-user

Expliquons à présent ce code.
La première ligne représente le texte de la boite d'alerte à afficher. Vous pouvez la changer à votre guise, en fonction par exemple de ce que vous souhaitez protéger.

La deuxième ligne est celle qui permet de définir le type d'authentification. Pour ceux champs, deux possibilités, Basic ou Digest. Ne cherchez pas à vous compliquez, utilisez Basic, cette ligne à l'image de la première, n'a pas vraiment d'intérêt à être changée.

La troisième ligne est une ligne enfin importante ! Elle définit le chemin d'accès absolu au fichier de mot de passe. Comment connaitre ce fichier ? Il suffit d'uploader un fichier appelé dans l'exemple absolu.php qui contient le code suivant :

<?php echo realpath('absolu.php'); ?>

Bien évidement, si vous choisissez de l'appeler autrement, il faudra aussi changer le contenu du fichier.
Exécutez ensuite la page, et vous connaitrez ainsi le chemin absolu de votre répertoire web et vous pourrez remplacer la ligne du fichier .htaccess.

La dernière ligne, définit quant-à elle la condition d'acceptation de la connexion. Ce champs peut prendre beaucoup d'autres valeurs que j'expliquerais dans un billet ultérieurement.

Uploadez donc maintenant votre fichier dans le répertoire à protéger, et à présent, un identifiant vous est demandé à chaque nouvelle session dans le dossier en question.


Conclusion :

La combinaison des fichiers .htaccess et .htpasswd est très efficace, seulement elle demande une maintenance à chaque fois que vous voulez ajouter un utilisateur. Mais dans ce cas, une nouvelle ligne dans le fichier .htpasswd et l'utilisateur est ajouté !

Il faut savoir en outre que la protection de fichiers et de dossiers est bien plus complète que je l'ai décrit ici, il existe plein d'autres astuces pour protéger vos pages, que j'exposerais dans un article écrit ultérieurement.

Commentaires

Page créée le Jeudi 07 Août 2008