Comme il s’agit d’un système de gestion de contenu très populaire, WordPress est la cible des pirates informatiques plus que toute autre plate-forme de site Web.

Les sites Web WordPress sont soumis à des tentatives de piratage chaque jour. Selon le rapport d’attaque de mars 2017 de Wordfence, il y a eu plus de 32 millions de tentatives  d’attaques par force brute contre des sites WordPress au cours de ce seul mois.

Prêt à l’emploi, WordPress présente de graves failles de sécurité qui le rendent vulnérable aux attaques par force brute. L’une de ces failles est la façon dont WordPress empêche les moteurs de recherche comme Google d’explorer les fichiers d’administration back-end : par le biais d’une simple règle d’interdiction dans le fichier robots.txt:

User-agent: *

Disallow: /wp-admin/

Bien qu’à première vue cela puisse sembler parfaitement raisonnable, il s’agit en fait d’une solution terrible. La règle d’interdiction du robots.txt pose deux problèmes majeurs :

  1. Étant donné que le fichier robots.txt d’un site Web est visible publiquement, une règle d’interdiction dirige les pirates vers votre dossier de connexion.
  2. Une règle d’interdiction n’empêche pas réellement les moteurs de recherche d’afficher les pages bloquées dans leurs résultats de recherche.

Il ne serait donc pas judicieux d’utiliser le « blocage » par robots.txt comme méthode pour protéger les dossiers de connexion sécurisés. Au lieu de cela, il existe d’autres moyens plus élégants de s’assurer que vos dossiers wp-admin soient sécurisés et ne peuvent pas être explorés et indexés par les moteurs de recherche.

En-tête HTTP x-robots-tag

Dans le contexte du référencement, les en-têtes HTTP les plus courants dont les gens ont entendu parler sont le code d’état HTTP et l’en-tête User-Agent. Mais il existe d’autres en-têtes HTTP qui peuvent être utilisés par les référenceurs intelligents et les développeurs Web pour optimiser la façon dont les moteurs de recherche interagissent avec un site Web, tels que  les en-têtes Cache-Control et l’en-tête X-Robots-Tag.

Le X-Robots-Tag est un en-tête HTTP qui informe les robots des moteurs de recherche (« robots ») sur la manière dont ils doivent traiter la page demandée. C’est cette balise qui peut être utilisée comme un moyen très efficace d’empêcher les dossiers de connexion et d’autres informations sensibles d’être affichés dans les résultats de recherche de Google.

Les moteurs de recherche comme Google prennent en charge l’en-tête HTTP X-Robots-Tag et se conformeront aux directives données par cet en-tête. Les directives que l’en-tête X-Robots-Tag peut fournir sont presque identiques aux directives activées par la balise meta robots.

Mais, contrairement à la balise meta robots, l’en-tête X-Robots-Tag ne nécessite pas l’inclusion d’une balise méta HTML sur chaque page affectée de votre site. En outre, vous pouvez configurer l’en-tête HTTP X-Robots-Tag pour qu’il fonctionne pour les fichiers pour lesquels vous ne pouvez pas inclure de balise méta, tels que les fichiers PDF et les documents Word.

Avec quelques lignes de texte simples dans le fichier de configuration Apache htaccess de votre site Web, vous pouvez empêcher les moteurs de recherche d’inclure des pages et des dossiers sensibles dans leurs résultats de recherche.

Par exemple, avec les lignes de texte suivantes dans le fichier htaccess du site Web, vous pouvez empêcher tous les fichiers de documents PDF et Word d’être indexés par Google:

<Files ~ "\.(pdf|doc|docx)$">

 Header set X-Robots-Tag "noindex, nofollow"

</Files>

C’est toujours une bonne idée de configurer votre site web de cette façon, pour éviter que des documents potentiellement sensibles n’apparaissent dans les résultats de recherche de Google. La question est de savoir si nous pouvons utiliser l’en-tête X-Robots-Tag pour protéger le dossier d’administration d’un site Web WordPress.

X-Robots-Tag et /wp-admin

Le X-Robots-Tag ne nous permet pas de protéger des dossiers entiers en une seule fois. Malheureusement, en raison des restrictions Apache htaccess, l’en-tête ne se déclenche que sur les règles s’appliquant aux types de fichiers et non pour des dossiers entiers sur votre site.

Cependant, étant donné que toutes les fonctionnalités back-end de WordPress existent dans le dossier /wp-admin (ou dans le dossier dans lequel vous l’avez modifié), vous pouvez créer un fichier htaccess distinct pour ce dossier afin de garantir l’en-tête HTTP X-Robots-Tag pour toutes les pages Web de ce dossier. Tout ce que vous avez à faire est de créer un nouveau fichier htaccess contenant la règle suivante :

Header set X-Robots-Tag "noindex, nofollow"

Utilisez ensuite votre programme FTP préféré pour télécharger ce fichier .htaccess dans le dossier /wp-admin, et le tour est joué. Chaque page de la section /wp-admin servira désormais l’en-tête HTTP X-Robots-Tag avec les directives ‘noindex, nofollow’. Cela garantira que les pages d’administration de WordPress ne seront jamais indexées par les moteurs de recherche.

Vous pouvez également télécharger un tel fichier htaccess configuré pour servir les en-têtes X-Robots-Tag dans n’importe quel dossier de votre site Web que vous souhaitez protéger de cette façon.

Par exemple, vous pouvez avoir un dossier dans lequel vous stockez des documents sensibles que vous souhaitez partager avec des tiers spécifiques, mais que vous ne voulez pas que les moteurs de recherche voient. Ou si vous exécutez un autre CMS, vous pouvez l’utiliser pour protéger les dossiers back-end de ce système contre l’indexation.

Pour vérifier si une page de votre site sert l’en-tête HTTP X-Robots-Tag, vous pouvez utiliser une extension comme HTTP Header Spy [Firefox] ou Ayima Redirect Path [Chrome], qui vous montrera la réponse HTTP complète d’une page Web.

Vérifiez plusieurs types de pages différents sur votre site après avoir mis en œuvre l’en-tête HTTP X-Robots-Tag, car une petite erreur peut entraîner le fait que chaque page de votre site Web sert cet en-tête. Et ce serait une mauvaise chose.

Pour vérifier si Google a indexé les pages Web de votre site dans le dossier /wp-admin, vous pouvez effectuer une recherche avec des opérateurs avancés comme ceci :

site:website.com inurl :wp-admin

Cela donnera alors un résultat de recherche répertoriant toutes les pages sur « website.com » qui ont ‘wp-admin’ n’importe où dans l’URL. Si tout va bien, vous ne devriez obtenir aucun résultat :

pas de résultat site:website.com inurl :wp-admin

L’en-tête HTTP X-Robots-Tag est une approche simple et plus robuste pour sécuriser vos dossiers de connexion WordPress, et peut également aider à optimiser la façon dont les moteurs de recherche explorent et indexent vos pages Web.

Bien que cela renforce votre sécurité, ce n’est en aucun cas la seule chose que vous devez faire pour sécuriser votre site.

Assurez-vous toujours d’avoir mis en place de nombreuses mesures de sécurité – telles qu’ une authentification de base en plus de votre connexion CMS – et installez un plugin comme Wordfence ou Sucuri pour ajouter des couches de protection supplémentaires.

Si vous avez aimé cet article, partagez-le. Vous pouvez également lire cet article sur la protection de vos environnements de test (staging).