Vous êtes sur la page 1sur 9

Tutorial Sécurité

Auteur : Damien GRILLAT


Date publication :22/02/2009
Fichier .htaccess
sous Apache

Notion(s) principale(s) :

 htaccess
 Apache

Résumé

Ce tutorial à pour but d’expliquer le fonctionnement du fichier .htaccess, notemment afin de


contrôler l’accès à certaines ressources sur un serveur apache. Nous verrons comment sécuriser
l’accès à un fichier ou un répertoire grâce à des couples login/mot de passe, comment effectuer des
redirections ou personnaliser les pages d’erreurs (ex : « 404 : page not found »).

NB : Suivant l’hébergeur sur lequel se trouve votre site web, et selon la version du serveur Apache
utilisée, certaine commandes peuvent varier. Pour info, les commandes suivantes ont été testées sur
les serveurs Linux de l’hébergeur 1and1.fr …
TABLE DES MATIERES

1 Présentation ........................................................................ 3
2 Configuration ....................................................................... 4
2.1 Création du fichier .htaccess ............................................................ 4
2.2 Syntaxe .htaccess ............................................................................ 4
2.3 Fichier mot de passe .htpasswd ....................................................... 5
2.4 Contrôler l’accès à un répertoire ...................................................... 5
2.5 Contrôler l’accès à un fichier en particulier ...................................... 6
2.6 Redirection de page ......................................................................... 7
2.7 Pages d’erreur personnalisées ......................................................... 7
2.8 Protéger le fichier de mot de passe .................................................. 9

Tuto Sécurité / Fichier .htaccess


2
1 PRESENTATION
Le fichier « .htaccess » (le point est important !) peut être utilisé sur les serveurs
apache dans divers cas. De l’authentification par mot de passe pour l’accès à certaines
ressources, à la redirection de page ou la personnalisation des pages d’erreur (401, 404,
500 etc.…), de nombreuses possibilités s’offrent à vous.

Par exemple, il est possible de limiter l’accès à tout un répertoire, ou bien au


contraire à seulement un sous répertoire ou un fichier, ou mieux à un type de fichier. Il
est donc possible d’affiner à l’extrême l’accès à vos ressources.

Ce tutorial sera probablement modifié à l’avenir, j’y ajouterai avec le temps de


nouveaux points intéressant ; mais pour le moment, nous nous concentrerons sur : la
mise en place d’un couple login/MDP pour accéder à un répertoire et pour accéder à un
fichier en particulier. Nous verrons aussi comment effectuer des redirections, et comment
personnaliser les pages d’erreur.

Tuto Sécurité / Fichier .htaccess


3
2 CONFIGURATION

2.1 Création du fichier .htaccess


De part son nom particulier, le fichier .htaccess ne pourra pas être crée directement,
Windows n’acceptera pas la syntaxe particulière. Le plus simple est d’ouvrir un fichier
texte, et de l’enregistrer par le biais de l’onglet File en .htaccess en précisant qu’il s’agit
de tout type de fichier.

2.2 Syntaxe .htaccess


Le contenu du fichier .htaccess est relativement simple en soit. Voici un exemple de
syntaxe de base (attention, il est important de noter pour la suite que les guillemets sont
nécessaires):

AuthType Basic

AuthName "Accès Admin"

AuthUserFile "/homepages/x/xxxxxxxxxx/htdocs/htpasswd/.htpasswd"

require user davidgrillat

• La première ligne « AuthType Basic » indique le type d’authentification utilisée,


ici il s’agira de l’authentification classique login/mdp.

• La seconde ligne indique le nom donné à cette authentification. Ce nom


apparaitra dans la fenêtre de login proposée à l’utilisateur lors d’une tentative
d’accès à un contenu protégé.

• La troisième ligne indique le chemin d’accès au fichier de mot de passe.

Attention, dans notre cas présent, il s’agit impérativement d’un chemin absolu vers votre
répertoire perso. Cependant, sur d’autre serveur ou chez d’autres hébergeurs, cette
syntaxe peut changer, notamment chez free où un chemin relatif suffira.

Dans le cas de 1and1.fr, vous pouvez trouver ce chemin absolu en affichant les infos de
votre domaine dans l’espace d’administration de 1and1 (cela vous indiquera le chemin
absolu vers la racine de votre site : « /homepages/x/xxxxxxxxxx/htdocs/. »

• La quatrième ligne indique que seul l’utilisateur davidgrillat pourra se


connecter après authentification. Pour permettre l’accès à n’importe quel
utilisateur valide, on remplacerait la quatrième ligne par : « require valid-
user ».

-> Le fichier est maintenant crée, il doit se placer dans le répertoire sur lequel il doit
agir...

Tuto Sécurité / Fichier .htaccess


4
2.3 Fichier mot de passe .htpasswd
Comme nous l’évoquions plus haut, le fichier .htaccess va vérifier les login fournis par
l’utilisateur dans un fichier de mot de passe « .htpasswd ».

Sa syntaxe est relativement simple, puisqu’il suffit de renseigner à chaque ligne du


fichier un login et le mot de passe associé, de la manière suivante :

Utilisateur :motdepasse

Utilisateur2 :motdepasse2

ETC.

Le fichier tel quel est utilisable. Cependant, il est possible de crypter les mots de passe
afin d’élever d’un cran la sécurité de votre site.

Vous pourrez crypter automatiquement les mots de passe à l’adresse suivante :

http://faq.1and1.fr/hebergements/protection/11.php (attention, valable pour 1and1


uniquement, d’autre script dispo sur le net !).

Voici le résultat :

Utilisateur : mod9XIDBOobD.

Utilisateur2 : teH0wLIpW0gyQ

ETC.

2.4 Contrôler l’accès à un répertoire


Si l’on veut seulement contrôler l’accès à un répertoire, le fichier .htaccess présenté
plus haut suffit :

AuthType Basic

AuthName "Accès Admin"

AuthUserFile "/homepages/x/xxxxxxxxxx/htdocs/htpasswd/.htpasswd"

require user davidgrillat

Seul davidgrillat pourra se logger sur la fenetre suivante lors d’une tentative d’accès
au répertoire :

Tuto Sécurité / Fichier .htaccess


5
Si l’authentification est un succès, la page souhaitée deviendra accessible. Le cas
échéant, une erreur 401 sera retournée.

Un fichier .htaccess placer dans un répertoire contrôlera également l’accès à tous ses
sous-répertoires.

2.5 Contrôler l’accès à un fichier en particulier


Afin de contrôler l’accès à un fichier, il suffit d’utiliser la balise <files></files> dans
votre fichier .htaccess.

Par exemple, si nous voulons limiter l’accès à admin.php, nous utilisons :

<Files admin.php>

AuthType Basic

AuthName "Accès Admin"

AuthUserFile "/homepages/x/xxxxxxxxxx/htdocs/htpasswd/.htpasswd"

require user davidgrillat

</Files>

Remarque : il est possible sur certains serveurs/hébergeurs de devoir utiliser la balise


<filesmatch> au lieu de <files>…

Tuto Sécurité / Fichier .htaccess


6
2.6 Redirection de page
Il est possible également de rediriger n’importe quelle page de votre site vers une
autre, ou vers un autre site.

Il suffit d’ajouter dans votre fichier .htaccess le code suivant :

Redirect permanent /page1.htm http://davidgrillat.com/page2.htm

Le résultat de ce code est que toute requête sur la page « page1.htm » située à la
racine de votre site redirigera automatiquement le visiteur sur la page2.htm. A noter qu’il
est conseillé pour l’url de redirection de rentrer une adresse complète ; un lien relatif à
partir de votre racine pourra causer des erreurs…

2.7 Pages d’erreur personnalisées


Quand un serveur WEB vous retourne une erreur de type 401 ou 404 ou autre, votre
navigateur affiche une page de ce style :

Pour rendre tout ceci plus agréable à l’œil, et faire que ces pages restent dans les
tons de votre site, nous allons les personnaliser avec .htaccess.

Tuto Sécurité / Fichier .htaccess


7
Avant de commencer, voici une liste des code d’erreur les plus souvent retournés :

400 : Echec de l'analyse HTTP


401 : mauvais pseudo/mdp dans le .htaccess
402 : Le client doit reformuler sa demande avec les bonnes données de paiement.
403 : Requête interdite
404 : Page non trouvée
405 : Méthode non autorisée
500 : Erreur interne au serveur ou serveur saturé
501 : Le serveur ne supporte pas le service demandé
502 : Mauvaise passerelle
503 : Service indisponible
504 : Trop de temps à la réponse
505 : Version HTTP non supportée

On peut noter que les erreurs en 40* concernent la partie cliente, et que les erreurs en
50* la partie serveur.

Nous allons par exemple modifier la page correspondant au code 401, qui doit donc
s’afficher lorsqu’un utilisateur échoue lors de l’authentification .htaccess.

Voici le code à ajouter dans .htaccess:

ErrorDocument 401 /401.php?type=401

En résumé, à chaque échec d’authentification, l’utilisateur verra s’afficher la page


401.php, ici située à la racine de notre site :

Tuto Sécurité / Fichier .htaccess


8
Petite astuce qui n’en n’est pas vraiment une, vous pouvez rediriger l’utilisateur sur
l’index de votre site au lieu d’afficher une page d’erreur. Pour se faire, il suffit de faire
pointer le code erreur 401 comme précédemment sur une page qui execute une
redirection vers votre index. Nous allons pour cela créer la page redirect.htm, qui
contient seulement ce code :

<html>

<head>

<title>Redirection</title>

<meta name="description" content="Cette page redirige automatiquement l'utilisateur


vers mon site!">

<meta http-equiv="refresh" content="0; URL=http://davidgrillat.com">

</head>

</html>

Il s’agit de la meta :

<meta http-equiv="refresh" content="0; URL=http://davidgrillat.com">

Content=0 signifie que la redirection se fait au bout de 0 seconde, soit immédiatement.

2.8 Protéger le fichier de mot de passe


Admettons que vous utilisez pour votre site un fichier .htaccess qui ne contrôle l’accès
que pour un seul fichier. Ceci implique que tout le reste de votre site est accessible pour
une personne qui en connaît l’arborescence. Ceci est un problème car votre fichier
.htpasswd se trouve également sur votre site, et même si les fichiers renommés de la
sorte (avec un « . » devant le nom) ne sont pas accessibles depuis un navigateur web, il
serait bien plus propre d’en protéger définitivement l’accès.

Pour se faire, nous allons tout simplement isoler le fichier .htpasswd dans un
répertoire où il sera le seul fichier. Nous ajouterons ensuite dans ce même répertoire un
autre fichier .htaccess qui ne contiendra que la ligne suivante :

Deny from all

Ceci indique qu’absolument personne ne pourra accéder au contenu de ce répertoire !

Tuto Sécurité / Fichier .htaccess


9

Vous aimerez peut-être aussi