Sécurité, Performance
et Haute Disponibilité
Petit guide .htaccess

Ce petit guide donne un aperçu du fonctionnement des fichiers .htaccess, qui permettent aux utilisateurs de contrôler diverses options qui affectent le fonctionnement du serveur web.

Champ d'action

Il est important de se rapeller que les directives présentes dans un fichier .htaccess s'appliquent non seulement au répertoire contenant .htaccess, mais également à ses sous-répertoires.

Commentaires

Les commentaires dans les fichiers .htaccess sont marqués par un '#' au début d'une ligne. Les '#' placés aux fins de lignes génèrent des messages inutiles dans le journal d'erreur du serveur.

Protection avec mot de passe pour répertoires

Édité correctement, .htaccess peut être utilisé afin de mettre en place une authentification avec mot de passe pour restreindre l'accès à des répertoires ou fichiers spécifiques.

  AuthName "domaine-autorisé"
  AuthType Basic
  AuthUserFile /home/myself/www/private/.htpasswd
  require valid-user

La directive AuthName spécifie le texte affiché par le dialogue de saisie de mot de passe, afin que l'utilisateur sache quel nom et mot de passe utiliser. AuthType choisit le mode d'authentification, soit «Basic» ou «Digest».

La directive AuthUserFile désigne le chemin d'accès vers le fichier texte contenant les noms d'utilisateurs et mots de passe, préférablement placé dans $HOME. Pour des raisons de sécurité, ne placez pas ce fichier sous votre répertoire ~/www et faites bien attention qu'il ne soit pas lisible par d'autres utilisateurs (chmod 0600).

Le fichier spécifié par AuthUserFile est généré par htpasswd(1). Ce programme permet de spécifier les mots de passe interactivement.

Exécutez ceci dans le répertoire qui doit être protégé -

  $ htpasswd -c .htpasswd username

Bloquage de requêtes provenant d'adresses spécifiques

Le fichier .htaccess peut faire en sorte que le serveur web refusera l'accès en provenance de l'adresse IP 10.0.0.1 -

  Deny from 10.0.0.1

Ou alors -

  <Limit GET>
  order deny,allow
  10.0.0.1
  allow from all
  </Limit>

L'accès peut être interdit à des sous-réseaux entiers en enlevant les derniers chiffres de l'adresse, par exemple 10.0.0..

Spécifier des documents d'erreur

Vous pouvez déclarer et utiliser vos propres documents en réponse à des erreurs, tels des requêtes pour des fichiers non-existants, avec la directive ErrorDocument. Veuillez vous assurer que la taille des documents d'erreurs soit minimale, et qu'ils n'incluent aucune image, car les vers informatiques peuvent rapidement générer beaucoup de requêtes. N'utilisez jamais d'URL comme destination pour le ErrorDocument. Notez que la location spécifie un chemin d'accès vers le fichier qui soit absolu ou relatif, comme démontré si dessous.

  ErrorDocument 404 errors/notfound.html
  ErrorDocument 403 errors/forbidden.html
  ErrorDocument 500 errors/servererror.html

Affichage des répertoires

Un fichier .htaccess peut être utilisé pour empêcher l'affichage du contenu d'un répertoire dépourvu de document d'index -

  Options -Indexes

Pour bloquer sélectivement l'affichage de fichiers nommés README et toutes les images d'extension .gif, utilisez la directive IndexIgnore -

  IndexIgnore README *.gif

Associations des extensions de fichier

Pour changer les associations d'extensions de fichier par défaut, la directive AddHandler peut être utilisée.

Supposez que pour une raison obscure, vous désirez que les fichiers d'extension .rat soient reconnus par le serveur web en tant que scripts cgi, faites:

  AddHandler cgi-script .rat

C'est possible, avec la directive AddType, d'associer des extensions de fichier à des types MIME spécifiques. Pour forcer l'association des fichiers avec l'extesion '.rif' avec le type 'image/gif', utilisez -

  AddType image/gif .rif

Pour assigner un «content-type» spécifique aux fichiers se terminant en .foo, vous utiliseriez -

  AddType application/x-foo .foo

S'il est de votre avis qu'un type MIME en particulier mérite une association globale au serveur web, n'hésitez pas à nous en faire part.

Négotiation de contenu

Les navigateurs web conformes à la norme HTTP/1.1 supportent les requêtes de pages web et autres resources en différents langages et codages de caractères. L'option MultiViews du module mod_negotiation d'Apache contrôle la sélection implicite de documents alternatifs selon leur extension.

  Options +MultiViews

Par exemple, si un navigateur web fait une requête pour index.html et aucun fichier se nomme ainsi, le serveur web essaiera index.html.fr, index.html.en et ainsi de suite, tout dépendant des préférences de langage de l'utilisateur.

Liens

Documentation pour Apache

Documentation pour PHP

  • PHP - The configuration file

Directives utiles


  Contre les brevets logiciels!