img-htaccess

Créer un fichier .htaccess pour protéger un dossier

Il est souvent nécessaire de créer un dossier « admin » avec accès limité afin de gérer l’administration d’un site Internet.

Supposons que vous ayez créé un dossier « admin » dans lequel se trouve tous les fichiers d’administration de votre site.
Comment empêcher que n’importe qui accède à ces pages ?

C’est là que les fichiers .htaccess entrent en jeu, on peut très facilement créer une protection par Nom d’utilisateur / Mot de passe qui empêche l’accès à tous les fichiers du dossier.

Pour cela, il faut créer ces 2 fichiers :

  • .htaccess : qui contient quelques paramètres
  • .htpasswd : qui contient les relations Nom d’utilisateur / Mot de passe

Création du fichier .htaccess

Créez tout d’abord un fichier nommé « .htaccess » sur votre disque dur. Ce fichier ne porte qu’une extension, c’est donc normal qu’il n’a pas de nom.

Ouvrez ce fichier avec votre éditeur (Notepad++, dreamweaver, …). Nous allons écrire quelques lignes pour le serveur afin de lui dire que seules quelques personnes peuvent accéder au dossier. Copier/coller le code suivant dans le fichier.

AuthName "Page d'administration protégée"

AuthType Basic

AuthUserFile "/homez/site/www/admin/.htpasswd"

Require valid-user

Ces 2 lignes sont à modifier :

  • AuthName : c’est le texte qui invitera l’utilisateur à inscrire son Nom d’utlisateur / Mot de passe. Vous pouvez personnaliser ce texte.
  • AuthUserFile : c’est le chemin absolu vers le fichier .htpasswd (que vous mettrez dans le même répertoire que le .htaccess).

Comment trouver le chemin absolu ?

Il existe une fonction PHP qui va beaucoup nous aider : realpath. Cette fonction donne le chemin absolu vers le fichier que vous indiquez :

1/ Créez un fichier appelé « chemin-absolu.php ».

2/ Inscrivez juste cette ligne de code à l’intérieur :

<?php print realpath('chemin-absolu.php') ; ?>
3/ Envoyez ce fichier sur votre serveur avec votre logiciel FTP. Placez-le dans le dossier que vous voulez protéger.

4/ Ouvrez votre navigateur et allez voir ce fichier PHP. Il vous donne le chemin absolu, par exemple :

/homez/site/www/admin/chemin.php

5/ Copiez ce chemin dans votre .htaccess, et remplacez le « chemin-absolu.php » par « .htpasswd », ce qui nous donne au final par exemple :

/homez/site/www/admin/.htpasswd

6/ Supprimez le fichier « chemin-absolu.php » de votre serveur.

Le fichier .htacces est prêt, plus qu’à créer le fichier .htpasswd.

Création du fichier .htpasswd

Créez maintenant un nouveau fichier dans votre éditeur. Le .htpasswd va contenir la liste des personnes autorisées à accéder aux pages du dossier. On y inscrit une personne par ligne, sous cette forme :

nom d’utilisateur:mot_de_passe_crypté

Votre fichier ressemblera donc à ceci :

administrateur1 :$1$h58XgW45$X7Egjs.uqs1QSDT4anw1s4
administrateur2 :$1$h4oVHp3O$X7Ejpn.uuOhJRkT3qnw3i0

Comment crypter un mot de passe ?

Il y a une fonction PHP qui crypte les mots de passe : crypt().
Il suffit de mettre le mot de passe que vous souhaitez crypter.
Par exemple, si vous souhaitez crypté le mot « bisous » :

<?php print crypt('bisous') ; ?>
Sur certain serveur tel que free.fr, les mots de passe sont à mettre en clair donc à ne pas crypter sinon l’authentification ne fonctionnera pas.

Envoi des fichiers sur votre serveur

Pour envoyer les 2 fichiers sur le serveur,
ouvrez votre logiciel FTP (Filezilla, …)
transférez les fichiers .htaccess et .htpasswd dans le dossier que vous souhaitez protéger

Le tour est joué.

A présent si quelqu’un essaie d’accéder à votre dossier, une fenêtre d’authentification apparaît demandant le nom d’utilisateur et le mot de passe.