Liens de spam apparus dans le pied de page ou d'anciens articles
Un lien « casino », « viagra » ou « prêt rapide » dans le pied de page n'est pas un widget mal réglé. Il sert le référencement de l'attaquant. Le retirer dans le thème sans couper ce qui l'écrit le ramène au prochain chargement.
Pharmacie, casino, prêts : ces liens visent le SEO de l'attaquant. Ils sont en base plus souvent que dans le thème. Les retirer sans couper le générateur les ramène.
Ce que ces liens font vraiment
Pharmacie, casino, crypto, prêts : le texte n'a aucun rapport avec votre métier. L'attaquant pose des ancres sur un domaine déjà un peu autoritaire — le vôtre — pour pousser ses pages dans Google. Vous n'êtes pas la cible commerciale. Vous êtes le véhicule.
Ces liens apparaissent souvent en petit, en bas de page, parfois en blanc sur blanc, parfois seulement pour Googlebot. Vous, connecté en admin, voyez un footer propre. Un client ou une recherche `site:votre-domaine.fr` montre autre chose. Ce décalage n'est pas un cache capricieux : c'est le fonctionnement normal d'une injection conditionnelle.
Tant que le script ou la ligne en base tourne, supprimer le lien à la main est du théâtre. Il revient. Dans les dossiers que nous reprenons, le footer a souvent déjà été « nettoyé » deux fois avant qu'on ouvre `wp_posts` et `wp_options`.
Footer, widgets, ou anciens articles
Trois emplacements reviennent. Le pied de page du thème (`footer.php`, un bloc Gutenberg « pied de page », un widget HTML). Une option en base qui injecte un extrait sur toutes les pages. Et d'anciens articles : l'attaquant y ajoute un paragraphe ou un lien, parce que ces URL ont déjà de l'autorité.
Sur WordPress, ouvrez Apparence → Widgets et Apparence → Éditeur de site (ou le customizer). Cherchez un bloc HTML que vous n'avez pas posé. Puis cherchez dans les articles : filtrez par date de modification récente, pas par date de publication. Un billet de 2019 modifié cette nuit est un signal plus fiable qu'un fichier isolé.
Sur PrestaShop ou un site PHP, le footer est souvent un fichier de thème plus une table de configuration (`ps_configuration`, une option « footer_html »). Ne vous arrêtez pas au FTP. Le HTML servi au visiteur peut venir de la base alors que les fichiers du thème sont intacts.
- Widget / bloc HTML du footer.
- Option de site (extrait, scripts, « insertion head/footer »).
- Contenu d'articles ou de pages anciens, modifié récemment.
- Fichier de thème (`footer.php`, `header.php`) comparé au zip d'origine.
Chercher d'abord en base, pas dans le thème
Changez de thème « pour voir » est un réflexe fréquent. Si les liens restent, ils ne sont pas dans le thème. S'ils disparaissent, le thème est un des supports — rarement le seul. Dans les deux cas, ouvrez la base.
Sur WordPress, une recherche SQL sur `wp_posts` et `wp_options` avec un mot du lien (un domaine de casino, « viagra », un fragment japonais) donne en dix minutes ce qu'une heure de FTP ne donne pas. Cherchez aussi `wp_postmeta` : certains constructeurs de pages stockent le HTML dans des meta, pas dans le contenu visible de l'éditeur.
Notez les `ID` et les dates `post_modified`. Cette liste sert au constat et évite de tout vider. Un article légitime qui contient le mot « casino » parce que vous parlez d'un événement n'est pas une injection. Le contexte décide : un paragraphe collé en bas, une ancre exacte, un `rel` bizarre.
Le piège des articles de 2019
Google connaît vos vieux billets. L'attaquant aussi. Injecter un lien dans un article déjà indexé rapporte plus que créer une page neuve. Dans l'admin, ces articles ne sautent pas aux yeux : ils restent dans leur catégorie, avec leur titre habituel. Seule la date de modification a bougé.
Triez les articles par « modifié ». Ouvrez les vingt premiers. Si le contenu a un bloc en plus en bas — souvent après le dernier `</p>` — c'est le motif. Exportez ces ID avant de les corriger. Ils figurent au constat, et ils servent à expliquer à Google pourquoi des extraits ont changé.
Les pages « mentions légales » et « contact » sont des cibles fréquentes : elles existent sur presque tous les sites, elles sont peu relues, et elles ont un PageRank interne. Regardez-les même si vous « savez » qu'elles n'ont pas bougé.
Couper le générateur avant d'éditer
Un cron, un mu-plugin, une ligne dans `functions.php` ou un fichier à la racine réécrit le footer toutes les heures. Nettoyer le HTML sans trouver cet écrivain, c'est recommencer demain. Listez les cron du compte d'hébergement, pas seulement ceux de WordPress. Ouvrez `wp-content/mu-plugins` même s'il est « vide » dans l'admin : ce dossier s'exécute sans activation.
Cherchez aussi un plugin « SEO », « header footer », « insert headers and footers » que vous n'avez pas installé, ou une option dans un plugin légitime dont le champ a été rempli à votre insu. Le générateur n'est pas toujours un malware avec un nom de pirate. Parfois c'est un champ que l'attaquant a trouvé déjà là.
Une fois le générateur identifié, copiez-le hors du serveur (preuve + horodatage), puis retirez-le. Ensuite seulement, corrigez le footer et les articles. L'ordre inverse laisse une course : vous éditez, le cron réécrit.
- Cron hébergeur + cron CMS.
- mu-plugins et must-use déguisés.
- Champs « scripts dans le footer » des plugins légitimes.
- Fichier PHP anodin à la racine (`radio.php`, `wp-core.php`).
Vérifier ce que Google a déjà indexé
Tapez `site:votre-domaine.fr` et parcourez les extraits. Des titres ou des descriptions qui parlent de pharmacie ou de yen indiquent que le spam n'est plus seulement sur le site : il est dans l'index. Une inspection d'URL dans Search Console montre le HTML que Googlebot a reçu, pas celui de votre session admin.
Si les extraits sont sales alors que votre page, ouverte à la main, est propre, vous avez du cloaking. Le traitement n'est plus « enlever un lien dans le footer » : c'est trouver le script qui sert un autre HTML au robot. Voir spam SEO japonais.
Ne demandez pas un réexamen Safe Browsing pour des liens en footer. Safe Browsing classe l'hameçonnage et les téléchargements, pas le SEO spam. Mélanger les deux files fait perdre des jours. L'index se corrige en coupant le générateur, puis en demandant une réindexation des pages clés.
Nettoyer sans casser les permaliens
Retirez le HTML injecté, pas l'article. Un `DELETE` sur des `wp_posts` « pour faire vite » casse des URL que Google connaît depuis des années. Éditez le contenu, laissez le slug. Les pages frauduleuses créées de toutes pièces, elles, doivent répondre 404 ou 410 — pas 200 avec un contenu vide.
Si le footer est dans le thème, comparez `footer.php` au zip de la version installée. Ne remplacez pas tout le thème « pour être sûr » : vous perdez le thème enfant, les overlays Elementor, les options de customizer. Isolez les lignes ajoutées.
Videz les caches ensuite : plugin, hébergeur, CDN. Un footer propre en base et un cache LiteSpeed de 48 heures, c'est un client qui voit encore le casino. Testez en navigation privée et depuis un téléphone, pas seulement connecté en admin.
Contrôle à J+2 et J+7
Le test de réussite n'est pas « le footer est propre ce soir ». C'est : plus de nouveau lien dans les articles, plus de nouvelle URL asiatique dans `site:`, plus de cron qui réécrit. Revenez à J+2, puis à J+7. C'est la fenêtre des portes oubliées.
Gardez la liste des ID d'articles touchés. Si l'un d'eux est modifié à nouveau sans vous, l'écrivain est encore là. C'est plus parlant qu'un scan Wordfence vert.
Si le volume d'URL indexées a explosé, passez par le retrait de préfixe une fois le générateur coupé, pas avant. Vous pouvez déclarer le site si la recherche en base vous dépasse : le prix s'affiche avant tout accès serveur.
- Footer et widgets relus en navigation privée.
- Vingt articles « récemment modifiés » encore propres.
- `site:` sans nouvel extrait pharmacie / casino.
- Aucun cron ni mu-plugin inconnu.