Nous avons tous sur nos sites certains répertoires que nous souhaitons protéger des yeux indiscrets, par exemple il est pratique dans certains cas d’avoir dans un répertoire des informations telles que le mot de passe d’accès à votre base de données ou les statistiques de fréquentation de votre serveur. Dans le cadre des hébergements sur serveur Apache, il est simple de restreindre certains répertoires à la curiosité du public.
C’est là que les fichiers .htaccess vont bien vous aider : on pourra très facilement créer une protection par Login / Mot de passe qui empêchera l’accès à tous les fichiers du dossier. Seules les personnes « autorisées » y auront donc accès. Le mode opératoire pour disposer de cette protection est simple et s’appuie sur un deuxième fichier qui contiendra les noms et mots de passe des personnes autorisées à accéder au contenu du répertoire.
Supposons que vous avez créé un dossier "Admin" dans lequel il y a tous les fichiers d’administration de votre site. Comment empêcher que n’importe qui accède à ces pages ? Le .htaccess va vous aider. Pour cela, il va donc falloir créer 2 fichiers :
Le .htaccess : ce fichier contiendra l’adresse du .htpasswd et quelques autres options que vous pourrez définir.
Le .htpasswd : ce fichier contiendra une liste de logins / mots de passe, pour chaque personne autorisée à accéder aux pages.
Dans le fichier .htaccess, saisissez les informations suivantes :
AuthUserFile /home/login/.htpasswd
AuthGroupFile /dev/null
AuthName "Acces Reserve"
AuthType Basic
<Limit GET POST>
require valid-user
</Limit>Analysons ces lignes Le fichier .htaccess contient les directives de protection : elles vont expliquer au serveur que seules certaines personnes sont autorisées à accéder au dossier. Parmi ces lignes, il y en a 2 que vous allez devoir changer :
AuthName : c’est le texte qui invitera l’utilisateur à inscrire son login / mot de passe. Vous pouvez personnaliser ce texte comme bon vous semble. Ici, ce qui apparaîtra est « Acces Reserve ».
AuthUserFile : là c’est plus délicat, c’est le chemin absolu vers le fichier .htpasswd (que vous mettrez dans le même répertoire que le .htaccess).
Dans notre exemple, nous avons :
AuthUserFile /home/login/.htpasswd
Cette instruction donne le répertoire dans lequel se trouve le fichier contenant les paires login/mot de passe des visiteurs autorisés. Notez bien qu’il ne s’agit pas d’une URL, mais bien d’un chemin d’accès depuis la racine du serveur. L’usage veut que ce fichier soit souvent nommé .htpasswd (c’est le cas ici), mais ce n’est pas du tout une obligation. On vous l’a dit, cette ligne donne le chemin menant au .htpasswd, et la plupart du temps c’est délicat à trouver. Comment on fait alors ? Heureusement, il existe une fonction PHP qui va beaucoup nous aider : c’est le realpath. Attention : Chez certains hébergeurs, la commande realpath est désactivée, donc vous ne pourrez peut-être pas l’utiliser. Le plus simple est alors de vous renseigner auprès de votre hébergeur pour savoir comment faire. Cette fonction realpath donne le chemin absolu vers le fichier que vous indiquez. Vous allez donc faire comme ceci pour trouver le chemin absolu :
Créez un fichier appelé "chemin.php3" et mettez juste cette ligne de code dedans :
<?php echo realpath('chemin.php3'); ?>
Envoyez ce fichier sur votre serveur avec votre logiciel FTP et placez-le dans le dossier que vous voulez protéger.
Ouvrez votre navigateur et allez voir ce fichier PHP. Il vous donne le chemin absolu, par exemple dans notre cas : /home/login/chemin.php3.
Copiez ce chemin dans votre .htaccess, et remplacez le "chemin.php3" par ".htpasswd", ce qui nous donne au final par exemple : /home/login/.htpasswd
Supprimez maintenant le fichier "chemin.php3" de votre serveur, il ne nous sert plus à rien maintenant qu’il vous a donné le chemin absolu. La ligne AuthUserFile indique donc où se trouve le fichier .htpasswd qui contient les logins et les mots de passe.
AuthGroupFile /dev/null
Cette instruction permet de donner un droit d’accès à un ensemble d’utilisateurs faisant partie d’un même groupe et est rarement utilisée dans le cas de sites Web personnels. Dans l’exemple, le fichier « /dev/null » est l’équivalent Unix de « nulle-part » ou « pas de fichier spécifique ».
AuthName "Acces Reserve"
est la chaîne de caractère qui apparaîtra dans la boîte de dialogue au moment de la saisie du nom et du mot de passe.
AuthType Basic
détermine le type d’authentification utilisé, dans notre cas l’authentification HTTP standard.
<limit GET POST> ... </limit>
détermine le type d’opérations permises. GET s’applique à la majorité des pages Web, PUT est utilisé par certains scripts ou éditeurs pour faire de l’upload sous protocole http. Il est important de mettre GET et POST en majuscules sur les dernières versions d’Apache.
require valid-user
signifie littéralement qu’un utilisateur valide est requis, à savoir un utilisateur pour le nom duquel une ligne existe dans le fichier .htpasswd. Une variante pourrait être :
require user jacko paulo pour limiter l’accès aux seuls utilisateurs jacko et paulo.
Enregistrez donc votre fichier avec le nom "htaccess.txt" pour le moment, on le renommera en ".htaccess" plus tard. Voilà, vous avez « décrypté » les lignes du .htacces et vous l’avez créé, on peut maintenant passer au .htpasswd.
23 décembre 2004
Protéger vos données (suite) : le .htpasswd
Déplacer une page, rediriger un site
Créez votre page d’erreur personnalisée
Le fichier .htaccess