Comment désindexer des URL de Google après un piratage ?
Si vous avez été récemment piraté, vous avez remarqué de nombreuses URL en trop dans Google pour spammer en masse l'index du moteur de recherche.
Si vous avez été récemment piraté, vous avez remarqué de nombreuses URL en trop dans Google pour spammer en masse l'index du moteur de recherche.
Préalable : Nettoyer son WordPress
Ce n'est clairement pas l'objet de ce post mais il est important de commencer par nettoyer le FTP ainsi que la base de données.
Dans l'idéal repartez d'une base fichier et données saine datant d'avant le piratage (d'où l'importance de faire des backups) et assurez vous de bien patcher la faille qui avait permis au pirate de rentrer. Profitez au passage pour changer les mots de passe, (back office utilisateurs + mysql à minima).
L'idée ici est d'éviter que l'incident ne puisse se reproduire quelques jours plus tard.
Identifier le format du "pattern" des URL piratées
Le point commun de nombreux systèmes de spam auto est de générer des URL qui se ressemblent toutes plus ou moins. Il faut comprendre par là que le contenu du slug répond à une règle que l'on peut reproduire avec une expression régulière, je vois ceux du fond qui commencent à avoir des sueurs : et oui on va faire des regex, mais on va rester simple.
Pour trouver ce pattern, commençons par faire un site : dans google. pour rappel, la commande site:nom-de-domaine donne toutes les URL du site qui sont indexées. exemple : site:swan.tools

liste d'URL piratées dans Google à l'aide de la commande site :
Sur l'exemple de ce site, on trouve par exemple ces URL :
- https://nom-de-domaine.fr/conmrixzp741732
- https://nom-de-domaine.fr/ctuuc961439
- http://nom-de-domaine.fr/haxfwcowv6881
- http://nom-de-domaine.fr/chlwfzkle658271
- http://nom-de-domaine.fr/fjsxt794539
- http://nom-de-domaine.fr/ngogtvudqw9573192
La liste n'est bien sûr pas exhaustive et j'ai volontairement changé quelques lettres pour que vous n'identifiez pas trop facilement le malheureux propriétaire qui a bien voulu me prêter son cas pour ce tutoriel.
On remarque ici que l'URL (slug) de chaque page piratée commence par une suite de lettre puis une suite de chiffre. Voilà c'est ça un pattern (tout simplement)
À partir de là on va essayer d'identifier les variations en trouvant une règle qui ne couvrira pas les URL légitimes de notre site Internet, mais ici il ne devrait pas y avoir de problème.
Dans notre cas on identifie que l'URL commence par de 5 à 10 lettres puis par une suite de 4 à 7 chiffres selon les URL.
Notre expression régulière sera donc celle-ci :
^[a-z]{5,10}\d{4,7}$
À noter que vous pouvez élargir les plages de quantités de caractères tant que ça ne risque pas de matcher une URL légitime de votre site.
Préparer la règle de redirection pour Apache
Nous allons ici préparer une règle qui aura deux effets :
- Indiquer à Google que la page a disparu
- Demander à Google de ne pas conserver cette page dans son index
RewriteRule ^[a-z]{5,10}\d{4,7}$ - [E=NOINDEXNOFOLLOW,G]
Header always set X-Robots-Tag "noindex, nofollow" env=NOINDEXNOFOLLOW
Si ces lignes ne marchent pas (comme par exemple sur un cpanel d'un hébergeur français bien connu) c'est qu'il faut rajouter la définition du document en 410 en début de fichier, ce qui donnera ceci :
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
ErrorDocument 410 default
RewriteRule ^[a-z]{5,10}\d{4,7}$ - [E=NOINDEXNOFOLLOW,G,END]
Header always set X-Robots-Tag "noindex, nofollow" env=NOINDEXNOFOLLOW
</IfModule>
Dans la première ligne nous retrouvons notre regex pour identifier les URL concernées, puis vous le voyez nous n'indiquons pas d'URL de redirection mais un simple "-", celui ci couplé à la lettre G dans la partie flag à droite permet de dire que l'URL est Gone. C'est le fameux code 410 pour dire que l'URL ne reviendra jamais et n'est pas redirigée. le flag E= sert ici à définir une variable d'environnement que l'on appelle (le label est arbitraire ici) NOINDEXNOFOLLOW, on aurait pu l'appeler toto, ça marcherait aussi bien.
Dans la seconde ligne on indique que l'on envoie quand même une en-tête http X-robots-tag "noindex, nofollow" qui va agir comme une meta robots dans le header du html. Sauf qu'ici nous n'avons pas besoin de faire modifier le code source du site.
Vous devrez donc placer dans l'idéal ces 2 lignes au début de votre fichier .htaccess juste après la ligne RewriteEngine On
Si vous souhaitez aller plus loin par exemple en accélérant la prise en charge, vous pouvez créer un sitemap complet de ces URL ou un plan de site HTML en suivant par exemple ce tutoriel sur l'accélération de prise en charge d'un plan de redirection. Pour limiter le risque d'une nouvelle attaque, voyez aussi comment identifier un site sécurisé et notre guide du protocole HTTPS.