Accueil > Développement > Programmation > Le fichier .htaccess

Le fichier .htaccess

L’accès à votre site protégé de façon très simple.

lundi 30 janvier 2006, par Prélude

Sauf indication contraire, vos pages sont accessibles depuis internet et tout le monde peu les voir. Si vous réalisez un album de famille avec quelques photos personnelles, mieux vaut les protéger avant de les mettres sur votre site internet. Google aura vite fait de les indexer et de les rendre accessible sur son moteur (http://www.google.fr/advanced_image_search?hl=fr).

Une façon simple de sécuriser un dossier est d’utiliser un fichier .htaccess

Authentification par mot de passe

La première chose à faire sera de constituer une base de données, qui est en fait un simple fichier texte, et qui va contenir les identifiants et mots de passe pour chaque utilisateur.

Vous pouvez créer ces identifiants et mots de passe à l’aide de notre générateur : http://www.magazine-jeux.com/outils-generateur-password.php

Vous indiquez simplement l’identifiant (Userid) et son mot de passe et vous cliquez sur "submit". Le générateur vous renvoie une ligne avec votre identifiant, 2 points " :" et le mot de passe codé.

Par exemple, en choisissant "test" et le mot de passe "salut", vous aurez la ligne suivante : test:36gmBrB8PPTqM

Vous créez donc un fichier que vous nommez ".htpasswd" dans lequel vous placez la ligne que vous venez de générer. Petite astuce sous Windows qui a un peu de mal avec des noms de fichier vide : donnez un nom quelconque et renommez le après l’avoir rempli.

Votre fichier contient donc :

test:36gmBrB8PPTqM

Vous pouvez rajouter autant de lignes que vous le souhaitez.

Si vous souhaitez ajouter par programmation les lignes dans ce fichier, vous pouvez utiliser la fonction "crypt" du php pour créer le mot de passe :

<?
        $Password='salut';
        $Ligne="test:".crypt(trim($Password), CRYPT_STD_DES);
        $Fichier=fopen(".htpasswd","a+");
        fputs($Fichier,$Ligne);
        fclose($Fichier);
?>

Il ne reste donc plus qu’à créer le fichier .htaccess qui indiquera les droits et l’emplacement du fichier .htpasswd sur le serveur.

AuthName message
AuthUserFile /chemin_complet/www/monsite/.htpasswd
AuthGroupFile /dev/null
AuthType Basic

<limit GET POST>
require valid-user
</Limit>

Donc, juste après AuthName vous trouverez le message que vous souhaitez afficher dans la boîte de dialogue qui s’affichera pour demander l’identifiant et le mot de passe.
AuthUserFile indique l’emplacement du fichier .htpasswd (que vous pouvez nommer autrement).
AuthGroupFile vous permet de définir l’emplacement du fichier groupe. En effet, il vous est possible de définir des groupes, ce qui peu s’avérer très pratique lorsque vous êtes plusieurs à travailler sur un projet.

Exemple de fichier de groupe :

administrateur: prelude marcel
utilisateurs: paul jean laurent

Dans ce cas, vous indiquerez dans la ligne require un nom de groupe :

<limit GET POST>
require group administrateur
</limit>

Vous pouvez également spécifier une protection pour certains fichiers uniquement. Pour cela, placez votre code dans la directive Files en indiquant les fichiers concernés :

<Files fichier1.htm fichier2.htm fichier3.htm>

AuthUserFile / ...
...

</Files>

Une petite précision importante avant de finir : le fichier .htpasswd pourrait être lu par n’importe qui puis, décrypté assez rapidement à l’aide d’un programme tel que "John the Ripper".
La méthode la plus simple consiste à placer le fichier .htpasswd dans un nouveau dossier lui-même protégé par un nouveau fichier .htaccess placé dans ce même dossier et contenant les lignes suivantes :

AuthGroupFile /dev/null
AuthName "Acces restreint"
AuthType Basic

deny from all

Nous verrons d’autres utilisations du fichier .htaccess dans de prochains articles.

Messages