logo rodolphe bertozzo

Sécuriser son site WordPress à l’aide du fichier htaccess en 7 astuces

sécuriser son site wordpress à l'aide du fichier htaccess

Le fichier .htaccess est le fichier de configuration utilisé par tout serveur Web Apache afin appliquer des directives de configuration spécifiques à un répertoire et ses sous-répertoires. Tous les sites WordPress hébergés avec un serveur de type Apache contiennent un fichier .htaccess. Dans le cas où le serveur de votre site est un serveur Ngnix, il ne sera pas possible de mettre en application ce qui sera expliqué.

Ce fichier a un impact sur l’entièreté du répertoire du site, puisqu’il est placé à la racine de ce dernier. Il peut permettre :

  • De changer l’URL de connexion à l’administration de WordPress comme je vous le montre dans cet autre article.
  • De configurer des redirections automatiques : une redirection 301 dans le cas où une page d’un site est changée ou supprimée pour ne pas nuire au trafic ; et même un tas d’autres redirections.
  • De forcer la redirection en HTTPS dans le cas où un certificat SSL a été ajouté au nom de domaine.
  • Des configurations supplémentaires en ce qui concerne la sécurité sur votre site comme nous allons le voir.
  • De traiter le contenu du site mis en cache.
  • De paramétrer les permaliens.
  • D’augmenter la taille maximale de téléversement d’un fichier sur votre site, dans le cas où vous ne souhaitez pas toucher au fichier php.ini pour changer la taille maximale autorisée par WordPress.

Un ou plusieurs fichiers htaccess ?

Un site WordPress comprend par défaut un fichier htaccess à la racine de ce dernier.

D’autres fichiers htaccess peuvent être créés dans des sous-répertoires. wp-admin ou wp-content/uploads, par exemple. Ces fichiers secondaires impacteront uniquement les répertoires dans lesquels ils sont situés, ainsi que leurs sous-répertoires.

Comment le personnaliser ?

Pour cela, vous devez accéder aux fichiers présents à la racine site de votre serveur avec un client FTP (FileZilla par exemple). Avant toute modification, je vous conseille de faire une sauvegarde de votre fichier tel qu’il est à l’origine pour pouvoir le restaurer en cas de problème.

fichier htaccess

Ensuite, vous ferez un clic droit sur ce dernier, avant de cliquer sur « Afficher/Editer », le fichier s’ouvrira ensuite, et ça sera à vous de jouer.

7 astuces pour sécuriser votre fichier htaccess

Sécuriser le fichier wp-config.php

Le fichier wp-config.php est un fichier de configuration de votre site, il établit le lien entre les fichiers de votre site et la base de données MySQL. Voici le code à ajouter dans le fichier .htaccess pour protéger le fichier wp-config.php :

<files wp-config.php>
order allow,deny
deny from all
</files>

Empêcher la navigation dans les répertoires sans index du site

Il s’agit de protéger la navigation sur les répertoires sans fichier index du site internet. C’est à dire que sans la présence de fichier index (index.html par exemple), le navigateur affiche la liste des fichiers et sous-répertoires présents dans le répertoire. Il suffit donc d’ajouter la ligne suivante au fichier htaccess de votre site :

Options All -Indexes

Sécuriser le fichier htaccess en lui même

Lorsqu’un visiteur tente d’accéder au fichier htaccess d’un site, le serveur renvoie directement une erreur « 403 Accès Interdit », grâce aux paramètres par défaut du fichier. Cependant, pour plus de sécurité, il est possible d’ajouter :

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

Protéger votre site internet contre le cross scripting et le clickjacking

  • Cross scripting ou attaque XSS : C’est une faille de sécurité qui permet d’ajouter du contenu dans une page et provoquer des actions sur les navigateurs web qui affichent la page. Le pirate peut utiliser tous les langages que le navigateur prend en charge pour rediriger vers un autre site pratiquant de l’hameçonnage ou encore de voler la session en s’accaparant les cookies.
  • Clickjacking : technique permettant de faire croire à un utilisateur qu’il navigue sur votre site (grâce à des balises frame ou iframe), alors que ce n’est pas le cas.

Vous ajouterez donc ce code à votre fichier htaccess :

<IfModule mod_headers.c>
Header set X-XSS-Protection "1; mode=block"
Header always append X-Frame-Options SAMEORIGIN
Header set X-Content-Type-Options: "nosniff”
</IfModule>

Protéger votre site contre le hotlinking des images

Le hotlinking des images consiste à utiliser l’adresse d’un fichier image publié sur un site pour l’afficher à partir de son adresse sur un autre site (sans télécharger le fichier et le téléverser sur l’autre site). Cette pratique peut à long terme consommer la bande passante de votre site. Il faudra donc ajouter cet extrait de code :

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC]
RewriteRule .(gif|jpg)$ http://www.yoursite.com/hotlink.gif [R,L]

Sur ligne 3 vous devrez entrer l’adresse URL de votre site. La ligne 4 propose la possibilité d’exclure un site de cette restriction, elle indique le domaine autorisé à accéder aux images. Dans ce cas, elle ajoute un moteur de recherche à la liste autorisée, parce que il n’est pas dans notre intérêt de bloquer les robots de recherche tels que Google bot ou Bing bot. Cela peut causer des soucis d’indexation de vos images dans les moteurs de recherche.

La ligne 5 établit la série de types de fichiers à bloquer, ainsi que le lien de l’image indiquant qu’il n’est pas possible d’exercer une pratique de hotlinking avec les images de votre site. Dans cette ligne, complétez (gif|jpg) par les extensions des types de fichiers que vous souhaitez bannir du hotlinking. En remplaçant « http://www.yoursite.com/hotlink.gif » par le chemin d’accès à votre image affichant un message d’erreur stipulant qu’il n’est pas possible d’effectuer une opération de hotlinking depuis votre site, tous les liens dynamiques qui tentent d’établir un lien vers des images de votre site dans le but de faire du hotlinking recevront à la place une image leur affichant un message d’erreur.

Empêcher que l’on découvre le nom d’utilisateur d’un compte

Lorsque l’on tape : monsite.com/?author=x, en remplaçant monsite.com par votre nom de domaine, et le x par le chiffre 1, on est redirigé automatiquement vers la page auteur de l’administrateur dont le nom d’utilisateur apparait dans l’adresse URL après redirection (monsite.com/author/idenfiant_auteur). On peut également faire la même choses pour découvrir les noms des autres comptes si le x est remplacé par d’autres chiffres. Pour bloquer cette redirection qui peut permettre à un pirate de découvrir les noms d’utilisateurs des comptes de votre site, je vous recommande d’ajouter le code suivant :

<IfModule mod_rewrite.c>
RewriteCond %{QUERY_STRING} ^author=([0-9]*)
RewriteRule .* - [F]
</IfModule>

Restreindre l’accès à la zone d’administration

Cette fois ci, la manœuvre est différente, puisqu’il ne s’agit pas de modifier le fichier htaccess natif figurant à la racine du site, mais d’en créer un nouveau dans le répertoire wp-admin, pour qu’il ait un impact sur le répertoire qui concerne l’administration de votre site.

order deny,allow
allow from 192.168.5.1
deny from all

Pour cela, il vous suffit de remplacer l’adresse IP 192.168.5.1, figurant sur la 2ème ligne par la votre (vous pouvez trouver votre adresse IP à l’aide de http://www.mon-ip.io/). Vous accéderez à la zone d’administration de votre site, mais uniquement si vous êtes connecté à l’adresse IP que vous avez définie.

Vous pouvez ajouter des adresses IP supplémentaires, à partir desquelles vous autorisez l’accès à la zone d’administration de votre votre site, en séparant chacune des adresses IP par des virgules. Sachant que les adresses IP des lieux publics (cafés, restaurants, bornes wifi…) ne fonctionnent pas.

Forcer la redirection du site en HTTPS

Je rajoute une 8ème et dernière astuce. Si vous avez installé un certificat SSL sur votre nom de domaine, il est possible que la page ne se charge pas avec le protocole https dans le navigateur automatiquement lorsque les utilisateurs se rendent sur le site. Vous devrez alors ajouter ces lignes de code au fichier pour réécrire l’adresse URL avec le protocole HTTPS dans le navigateur :

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Modifier le fichier .htaccess : pertinent pour la sécurité

En modifiant le fichier htaccess vous avez toutes les possibilités de sécuriser un peu plus votre site. De plus, vous évitez de surcharger votre site WordPress avec des extensions, puisqu’il vous suffit de modifier certains fichiers en leur ajoutant des directives.

Vous avez apprécié cet article ?

En savoir plus sur l'auteur...

Rodolphe BERTOZZO

Etudiant freelance concepteur web