- RESTREINDRE L'ACCÈS À UNE PARTIE DE SITE -

- Revenir à la page des formations et fiches techniques -

Présentation

Un fichier nommé ".htaccess" est un fichier qui décrit des droits d'accès à l'ensemble des documents d'un dossier d'un site. Avec un tel fichier on peut interdire totalement l'accès à un dossier, l'autoriser pour certaines adresses IP ou à des utilisateurs prédéterminés... Ces types de fichiers ne fonctionnent que sur des serveurs Apache...

Voici comment protéger le dossier "secret" d'un site avec 1 sous-répertoire "reserve" dans lequel on dépose les fichiers auxquels on veut restreindre l'accès et 1 sous-répertoire "mdp" qui contient le fichier de mots de passe (ce dossier étant inderdit à toute autre lecture). Tous les fichiers déposés dans le dossier "secret/reserve" nécessiteront alors une authentification.

ATTENTION ! Les serveurs Apache de FREE ont été modifiés pour faciliter l'usage de ces fichiers. Ils ne sont donc pas tout à fait identiques...

Créer les fichiers ".htaccess"

Pour créer un fichier ".htaccess" il suffit d'utiliser un simple éditeur de textes (par exemple le bloc-notes) puis d'enregistrer le fichier sous un nom quelconque (par exemple protege.txt) et de le renommer en ".htaccess" (Avec Windows 9x/Me/XP il faut soit renommer le fichier après son transfert dans le logiciel client FTP, soit avant le transfert en utilisant la commande DOS RENAME ainsi : RENAME protege.txt .htaccess ).

1. fichier ".htaccess" situé dans le dossier "secret/reserve" permettant un accès avec authentification (hors FREE) :

AuthUserFile "adresse_de_mon_site/secret/mdp/.htpasswd"
AuthGroupFile /dev/null
AuthName "Ecrire ici en clair le message apparaissant dans la boite d'identification."
AuthType Basic
<limit GET POST>
require valid-user
</Limit>

1b. fichier ".htaccess" sur serveur CIEL5 (académie de Nancy-Metz) :

Consulter le message de Jean-Michel HANQUET de décembre 2003 dans l'archive de la liste des Gestionnaires de sites de l'académie de Nancy-Metz (voir aussi le message de P-Y. GAUTHIER et Marc SCHNEIDER concernant la restriction d'accès à des pages en PHP ou en ASP).

2. fichier ".htaccess" situé dans le dossier "secret/reserve" permettant un accès avec authentification (chez FREE) :

PerlSetVar AuthFile secret/mdp/mon_fichier_de_mots_de_passe.txt
AuthName "Ecrire ici en clair le message apparaissant dans la boite d'identification."
AuthType Basic
require valid-user

4. fichier ".htaccess" situé dans le dossier "secret/mdp" et interdisant totalement les accès :

deny from all

Créer le fichier ".htpasswd"

Les fichiers ".htpasswd" doivent être écrits avec un programme particulier (cliquer ici pour le télécharger ; il s'agit de celui fourni avec EasyPHP 1.6 et fait 36 Kio) qui crypte le mot de passe (sauf chez FREE où les mots de passe doivent être écrits en clair auquel cas on crée le fichier avec le bloc-notes et il porte l'extension TXT). Si vous utilisez EasyPHP (ou si vous avez un serveur avec Apache installé) ce programme se trouve dans le dossier apache\bin d'EasyPHP.

1. Créer le fichier ".htpasswd" (hors FREE)

Il suffit de saisir, dans une session DOS : htpasswd -c .htpasswd indentifiant1 . L'outil demande alors le mot de passe pour cryptage (2 fois pour vérifier la saisie).

Il faudra évidemment utiliser des identifiants et des mots de passe sans caractères exotiques (accents, cédilles, espaces...) afin d'éviter les éventuels problèmes d'interprétation des serveurs...

On peut aussi faire le choix d'écrire le fichier avec le bloc-notes et d'utiliser un générateur de mots de passe : cliquer ici pour utiliser un générateur en ligne. Il suffit alors de créer le fichier avec la structure suivante :

identifiant_1:mot_de_passe_crypté_1
identifiant_2:mot_de_passe_crypté_2

2. Ajouter des utilisateurs au fichier ".htpasswd" (hors FREE)

Il suffit de saisir dans une session DOS : htpasswd -m .htpasswd identifiant2 . L'outil demande alors le mot de passe pour cryptage (2 fois pour vérifier la saisie). On peut ajouter autant d'identifiants qu'on le souhaite...

3. exemple de fichier de mots de passe situé dans le dossier "secret/mdp" chez FREE :

identifiant_1:mot_de_passe_en_clair_1
identifiant_2:mot_de_passe_en_clair_2

Déposer les fichiers sur le site

Il ne reste plus qu'à déposer ces fichiers sur le site à l'aide d'un logiciel client FTP (WS_FTP, LeechFTP, Dreamweaver...). Cette manipulation doit se faire en utilisant exclusivement le mode ASCII.

Autres types de fichier ".htaccess"

1. fichier ".htaccess" n'autorisant l'accès qu'au serveur local (utilisé pour protéger certains dossiers d'EasyPHP localement) :

Order deny,allow
allow from 127.0.0.1
deny from all

2. fichier ".htaccess" n'autorisant pas l'accès à un fichier particulier (par exemple pour protéger un fichier appelé "connect.php" contenant les codes d'ouverture d'une base MySQL) :

<Files connect.php>
Order allow,deny
Deny from all
</Files>

3. fichier ".htaccess" pour personnaliser les erreurs de type 404

ErrorDocument 404 /mes_dossiers_depuis_la_racine/mon_fichier_erreur_personnalisé.ext

Pour tester cette dernière fonctionnalité cliquer sur ce fichier inexistant lien_mort.html (ou saisissez n'importe quoi derrière le nom du dossier "http://christophe.prevot.free.fr/formations/" dans la barre "adresse" de votre navigateur) : une page personnalisée (erreur.html) apparaît et vous renvoi automatiquement vers l'index !

 

A la recherche d'un autre site référent ? Consultez la documentation officielle (en anglais) mais aussi un tès bon site sur la Protection par htaccess et les Restrictions d'accès chez FREE, sans oublier toutes les directives utilisables dans les fichiers .htaccess dans la documentation Apache 1.3 ou Apache 2.2.

- Revenir à la page des formations et fiches techniques -