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 :
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.
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.
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.
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>
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
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>
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>
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.
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>
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.
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]
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.