Comment protéger le fichier HTACCESS ?

Réponses rédigées par Antoine
Dernière mise à jour : 2017-11-21 17:33:43
Thèmes : htaccess - securite - apache - nginx
Question

Comment puis-je protéger le fichier .htaccess de mon site contre les tentatives de piratage ?

Réponse

Tout d'abord les droits d'accès au fichier .htaccess doivent être rw-r-r soit 644.

Ensuite, la méthode la plus répandue pour protéger les fichiers htaccess est d'y ajouter le code suivant qui empêchera quiconque d'accéder à un fichier nommé précisément ".htaccess".

<Files .htaccess>
 order allow,deny
 deny from all
</Files>

Ce n'est pas idéal car la correspondance est sensible à la casse. Sur certains systèmes, les fichiers htaccess protégés par cette méthode peuvent rester accessibles s'ils sont écrits par exemple en majuscule "HTACCESS".

Le mieux est d'empêcher l'accès externe à tout fichier contenant ".hta", ".HTA", ou n'importe quelle combinaison insensible à la casse.

.htaccess .HTACCESS .hTaCcEsS FILE.htaccess filename.HTACCESS RoOt.hTaCcEsS

Voici le code qui effectue le job :

<Files ~ "^.*\.([Hh][Tt][Aa])">
 order allow,deny
 deny from all
 satisfy all
</Files>

Le code doit être placé dans le fichier .htaccess ou directement dans le fichier httpd.conf d'Apache.

Selon les sections que vous utilisez, il y a un ordre à respecter ; il est explicité sur cette page du site d'Apache.

Réponse

Vous pouvez également protéger l'accès aux fichier .htaccess et .htpasswd via les fichiers de configuration de Apache, et de Nginx, si ce dernier est utilisé comme proxy inversé :

Règle à ajouter au fichier Apache httpd.conf :

<FilesMatch ^(?i:\.ht.*)$>
  Require all denied
</FilesMatch>

Si vous utilisez Nginx comme proxy inversé, il faut également ajouter une règle au fichier nginx.conf :

location ~* /\.ht {
deny all;
}