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.

Liens connexes qui vous serviront dans l'environnement du fichier .htaccess

Limiter le nombre de hits  -  Interdire les aspirateurs(1)  -  Interdire les aspirateurs (2)  -  Liste générale des applications et aspirateurs indésirable, écriture .htaccess  -   Ecriture du fichier .htaccess (et htpasswd)  -  Liste vérifiée des applications et aspirateurs indésirables  -  Autres applications vérifiées  -  .htaccess et liste vérifiée des applications indésirables   -  Info par mail d'une erreur 401,403,404,405  -  Page personnalisée d'erreur  -  Le fichier robots.txt  -  Ecriture et redirection avec htaccess  -  Mot de passe avec .htaccess et .htpasswd  -  Codez vos mots de passe  -  Interdire l'affichage de ses images  -  CHMOD  -  Les codes d'erreurs 

Retour

Copyright www.toulouse-renaissance.net ©