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...
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 ).
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>
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).
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
deny from all
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.
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
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...
identifiant_1:mot_de_passe_en_clair_1
identifiant_2:mot_de_passe_en_clair_2
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.
Order deny,allow
allow from 127.0.0.1
deny from all
<Files connect.php>
Order allow,deny
Deny from all
</Files>
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.