Base de connaissances / Knowledge base

Protection d'une partie du site par mot de passe d'un hébergement PHP/MYSQL (14.08.06)

But

Parfois, on a besoin de restreindre l'accès à un dossier, à une partie du site web. Pour ce faire, le plus commun est la protection par mot de passe, parfois appelée, un peu à tors, protection htaccess. Cette solution se rapporte aux hébergements PHP/MySQL sur un des serveurs de SysCo.

Préambule

Attention, les manipulations décrites ici, bien que pas trop compliquées, demandent un peu de connaissances techniques et/ou de rigueur. Si vous n'êtes pas à l'aise avec les manipulations décrites et hésitez à vous lancer, n'hésitez pas à nous contacter ; nous ferons volontiers cette mise en place pour vous.

Notez aussi que lorsque l'on protège un dossier, on protège de même tous ses sous-dossiers.

Enfin, ce procédé n'est valable que pour les sites hébergés sur des solutions Linux; si nous hébergeons votre site sur une plateforme MS-Windows, veuillez nous contacter .

Principe
le principe est le suivant: la protection s'appuie sur deux fichiers:
  1. Le premier sert à aiguiller sur la demande de user/pass; c'est .htaccess
  2. Le deuxième contient un nom d'utilisateur et la version chiffrée du mot de passe; c'est .htpasswd
Pour vous aider à remplir ces deux fichiers, nous avons mis en place un petit outil online: protection htaccess. Préparer ces deux fichiers vides sur votre bureau puis aller sur cet outil pour les remplir. Vous serez ensuite redirigé ici pour la suite.

Finition

Une fois ces fichiers remplis, il faut encore modifier la ligne AuthUserFile du fichier .htaccess car celle-ci doit contenir le chemin complet du dossier que vous allez protéger. Pour le connaître, créez un troisième fichier appelé path.php et qui doit contenir ceci:

<?php
echo realpath("./")."/.htpasswd";
?>

Sauvez ce fichier path.php et mettez-le dans le dossier à protéger sur votre site. Allez ensuite sur ce fichier dans votre navigateur, par exemple http://www.mondomaine.ch/dossier_secret/path.php

Là, vous devriez voir un chemin du genre /var/www/html/www.mondomaine.ch/dossier_secret/.htpasswd C'est exactement ce qu'il vous faudra mettre à la ligne AuthUserFile du fichier .htaccess à la place de /chemin/complet/vers/dossier/.htpasswd Cette ligne ressemblera donc à quelque chose comme
AuthUserFile /var/www/html/www.mondomaine.ch/dossier_secret/.htpasswd

Sauvegardez, transferez les deux fichiers dans le dossier à protéger et effacez-en path.php dont on aura plus besoin. Si tout s'est bien passé, votre navigateur devrait désormais demander un username et un mot de passe lorsque vous allez sur http://www.mondomaine.ch/dossier_secret/

Voilà, c'est terminé!