| htaccess et htpasswd |
Outils pour webmaster. Trucs et astuces en code HTML et JavaScript : améliorer son site internet
Descriptif : grâce à eux, vous pouvez sécuriser votre site par l'invite d'entrer un nom d'utilisateur et un mot de passe avant d'accéder aux pages qui suivent. Ce couple de fichier, d'une écriture relativement simple, a fait couler plus d'encre virtuelle dans les forums que tout autre code ou fichier. Car il faut faire très attention à la préparation et à la mise en oeuvre. Les combinaisons possibles d'autorisations sont variées. En effet, l'autorisation d'entrer ne se limite pas à 1 utilisateur. On peut autoriser tous ceux qui ont les mots de passe à entrer dans des endroits spécifiques, interdire un groupe d'utilisateur pour une partie pendant qu'on autorise un autre à tout etc. Une littérature abondante traite de ce sujet.
Le fichier .htaccess ne fonctionne pas avec les extensions FrontPage.
Les fichiers .htaccess et htpasswd
fonctionnent sur les serveurs
APACHE. Si votre hébergeur vous a déjà
installé un fichier .htaccess sur votre site, avant de le remplacer par le vôtre,
copiez-le dans un dossier et laissez-le tel quel. Ne pas l'effacer, l'éditer, le
transformer, ajouter des éléments.
Il se peut aussi que vous ne puissiez le voir dans la fenêtre de
votre client FTP. Configurez votre application pour qu'il apparaisse et que vous
n'effaciez pas ou que vous ne l'écrasiez pas par accident (voir plus bas).
Le nom du fichier .htaccess ne peut-être changé car il correspond à la
configuration de base du serveur. Mais, évidemment votre hébergeur peut lui attribuer un
autre nom, ce qu'il fait très rarement. En ce cas, il devrait vous en prévenir. En
revanche, le fichier .htpasswd peut porter toute autre appellation que
vous souhaiteriez lui donner (.htpassword, .password,
etc, toujours avec un point devant). Mais la convention est de le nommer ainsi.
Avant de se lancer dans des autorisations multiples, il paraît
nécessaire de bien maîtriser les fonctions de base
pour passer ensuite à des réalisations plus complexe. Les hébergeurs gratuits
peuvent limiter l'utilisation de .htaccess et htpasswd.
Se renseigner auprès du vôtre.
Nous allons donc examiner ici la base de la demande du mot de passe.
Nota : les fonctions du fichier .htaccess ne sont pas compatibles avec les extensions
FrontPage qui sont à éviter.
1°) Avant toute chose, il faut connaître le chemin réel de votre site qui n'est pas forcément http://www.mon_site.com/. Vous devez le demander à votre hébergeur ou, pour ceux qui aiment bien chercher, l'obtenir vous-même.
Pour ce faire, vous devez, à partir d'un simple éditeur de texte comme le Bloc-notes (NOTEPAD), écrire les lignes :
<?php
phpinfo();
echo realpath("path.php");
?>
- Sauvegardez sur votre disque dur et transférez à la racine de votre site ce fichier
sous le nom path.php .
- Ouvrez votre navigateur et dans la ligne de commande, écrivez : http://www.mon_site.com/path.php et
envoyez. Vous devriez voir apparaître une page comportant tous les renseignements de
configuration PHP de votre hébergeur.
- Nous allons nous intéresser à la ligne qui contient :
_SERVER["PATH_TRANSLATED"]
où vous devriez voir apparaître, en face, le chemin réel de votre site qui pourrait se présenter sous la forme :
/home/sites/site64/web/path.php
Mieux encore, la dernière ligne tout au fond de la page vous l'indique.
Pour plus de clarté, site64 est le numéro de votre site chez
l'hébergeur et correspond en fait à : www.mon_site.com
La ligne s'écrit donc : /home/sites/www.mon_site.com/web/path.php et
votre chemin absolu à la racine est donc :
/home/sites/www.mon_site.com/web/
2°) Nous allons choisir le nom d'utilisateur et le mot de passe. Pour ce faire, cliquez ici.
- Sauvegardez sur votre disque dur le code crypté que vous avez inscrit dans le Bloc-notes sous le nom htpasswd.txt et souvenez-vous bien du login et du mot de passe en clair que vous aurez choisi (Exemple : Login = toto Mot de passe = histoire12).
3°) Nous allons créer le fichier de commande contenant le titre de la protection, le chemin de .htpasswd et la commande d'ouverture de la fenêtre d'autorisation. Ouvrez le Bloc-notes (NOTEPAD) et inscrivez les lignes suivantes que nous allons prendre comme exemple :
Authname "Zone protégée"
AuthUserFile /home/sites/www.mon_site.com/web/repertoire/.htpasswd
AuthGroupFile /dev/null
AuthType Basic
<limit GET POST>
require valid-user
</limit>
Certains hébergeurs sous UNIX (comme AMEN) demanderont d'ajouter une ligne
supplémentaire en début de code : AuthPAM_Enabled off
Renseignez-vous auprès du vôtre.
Qu'avez-vous à modifier ?
- Dans la ligne Authname "Zone protégée", changez Zone
protégée par le nom que vous voulez (Exemple : Bonjour).
- Dans la ligne AuthUserFile /home/sites/www.mon_site.com/web/repertoire/.htpasswd
remplacez /home/sites/www.mon_site.com/web/ par le chemin que vous
avez trouvé plus haut à l'aide du fichier path.php.
- Ajoutez à la suite de cette ligne le nom du dossier que vous voulez protéger (Exemple
: dossier à la place de repertoire) et le nom du
fichier .htpasswd. Nous avons donc un fichier qui ressemble à :
Authname "Bonjour"
AuthUserFile /home/sites/www.mon_site.com/web/dossier/.htpasswd
AuthGroupFile /dev/null
AuthType Basic
<limit GET POST>
require valid-user
</limit>
Nota important :
- Si vous recopiez le script à partir de cette
page ou d'un autre site (forums, outils etc..), assurez-vous que vous avez des retours
chariots de ce type ¶ (touche Entrée, Enter etc.) en bout de chaque ligne et non des
retours générés avec Ctrl+M. Vous pouvez voir la différence avec un
éditeur de texte évolué, comme Word, en demandant à voir les codes de commandes de la
page. Pour éviter cet inconvénient, copiez votre code dans le Bloc-notes et faites des
retours chariots en bout de chaque ligne en éliminant les espaces inutiles qui pourraient
se trouver au bout de ces lignes.
- Assurez vous aussi qu'il n'y a pas
d'espaces en début de ligne.
- N'introduisez pas d'espaces dans les noms de vos
fichiers ou dossiers.
- Sauvegardez sur votre disque dur le fichier ainsi obtenu sous le nom htaccess.txt .
Nota : vous pouvez enregistrer directement ces fichiers en .htaccess et .htpasswd sur votre disque dur si vous entourez ces noms par des guillemets dans la ligne de commande du Bloc-notes : Nom : à l'invite Enregistrer sous... , tel que ".htaccess" et ".htpasswd"
4°) Ouvrez votre client FTP. N'utilisez pas le module FTP
de logiciels comme Front Page ; préférez LeechFTP ou FTP
Expert. Assurez-vous impérativement que htaccess.txt et htpasswd.txt
seront transmis en ASCII (voir les fichiers d'aide et la configuration de
votre logiciel).
- Transférez ces deux fichiers dans le répertoire que vous voulez protéger.
Rafraîchissez.
- Nota : vous pouvez protéger votre site entier en mettant htpasswd.txt et
htaccess.txt à la racine
de votre site.
- Sur
votre site renommez htaccess.txt et htpasswd.txt
en .htaccess et .htpasswd (avec un point devant le nom).
Certains clients FTP n'affichent pas les fichiers cachés, il vous faudra donc configurer
votre logiciel FTP pour vérifier que ces 2 fichiers sont présents (pour FTP Expert 2
et 3 cliquez
ici ).
- Donnez les droits de ces deux fichiers avec un CHMOD 644. (voir ici pour la propriété des fichiers
côté serveur). Rafraîchissez.
C'est terminé.
5°) L'essais :
- Ouvrez votre navigateur et appelez le répertoire protégé (Exemple : http://www.mon_site.com/dossier/index.html)
Vous devriez voir apparaître la fenêtre suivante :

- Entrez votre login et votre mot de passe en clair (pas le codé). Comme l'exemple
plus haut : toto et histoire12.
- Si tout a été fait correctement, la fenêtre devrait disparaître et vous devriez
accéder à vos pages du répertoire. Sinon, la fenêtre se réouvrira et vous redemandera
login et mot de passe.
- Le couple .htaccess et .htpasswd protège le dossier
et les sous-dossiers qui en dépendent. Mais rien ne vous empêche de mettre dans un ou
plusieurs de ces sous-dossiers d'autres couples .htaccess et .htpasswd.
Il y aura donc une protection en cascade.
Nota : afin de sécuriser au maximum votre fichier .htaccess, le rendre invisible et empêcher des requêtes sur le mot de passe, écrivez ce script à partir de la première ligne du fichier.
SetEnvIfNoCase Request_URI \.ht(access|passwd)$ ban
<Files ~ "^.*$">
order allow,deny
allow from all
deny from env=ban
</Files>
Ou plus simplement si vous ne voulez sécuriser que le fichier .htaccess :
<Files .htaccess>
order deny,allow
deny from all
</Files
Pour les abonnés MULTIMANIA / LYCOS : il peut y avoir quelques différences entre les explications que Multimania / Lycos donne dans ses pages d'aide et celles ci-dessous. Après avoir lu la première partie de cette page, préférez les explications ci-dessous à celles figurant dans le tutorial de Multimania.
Le fichier .htaccess ne peut être placé à la racine de votre compte. Il doit
impérativement se trouver dans un dossier que vous aurez créé.
La ligne AuthUserFile seule est à modifier par rapport aux explications
de la première partie de cette page.
Exemple : si votre nom de site est zorglub1962, l'URL complet
étant donc http://membres.lycos.fr/zorglub1962/ et que le dossier à
protéger se nomme mondossier, vous devrez écrire :
AuthUserFile "/data/members/free/multimania/fr/z/o/r/zorglub1962/htdocs/mondossier/.htpasswd"
Dans lequel z/o/r sont les 3 premières
lettres de votre nom de site, zorglub1962 le
nom complet de votre site, mondossier le nom
du dossier à protéger où vont se trouver les fichiers .htaccess et .htpasswd.
Ne pas oublier de mettre la ligne de commande entre parenthèses tel que AuthUserFile
"/........../.htpasswd/"
Ce qui donne :
AuthUserFile "/data/members/free/multimania/fr/z/o/r/zorglub1962/htdocs/mondossier/.htpasswd"
AuthGroupFile /dev/null
AuthName "Bonjour"
AuthType Basic
<Limit GET>
require valid-user
</Limit>
Pour les abonnés FREE.FR : les explications précédentes sur la création et le transfert du fichier .htaccess sont les mêmes pour FREE. La syntaxe du fichier est légèrement différente.
Si le fichier .htaccess reste à peu près identique, en revanche, il n'y a pas de fichier .htpassword. Ce fichier est remplacé par un fichier avec l'extension .txt (par exemple, liste.txt)qui contiendra le(s) noms (s) des utilisateurs autorisés.
* Le fichier .htaccess chez FREE :
PerlSetVar AuthFile dossier/sous_dossier/liste.txt
AuthName "Acces Restreint"
AuthType Basic
require valid-user
La ligne PerlSetVar AuthFile désigne le chemin à partir de la racine de votre site qui pointe vers le fichier de la liste des utilisateurs autorisés (Par exemple : 1er dossier = dossier, 2ème dossier = sous_dossier, liste des utilisateurs autorisés = liste.txt).
* Le fichier contenant la liste des personnes autorisées et les mots de passe :
robert:moTdepass
geraldine:Etree7
noel:viSIter
A noter que les mots de passe sont EN CLAIR. Il ne faut donc pas les coder comme chez les autres hébergeurs sous UNIX et comme le permet l'utilitaire présenté plus haut.
Pour protéger cette liste, créez un fichier .htacces dans le même répertoire que votre fichier liste.txt et qui comportera uniquement la ligne :
deny from all
Transférez ces fichiers en ASCII.
Page suivante : générateur de fichiers .htaccess/.htpasswd directement sur votre site et sans difficultés.
Copyright www.toulouse-renaissance.net ©