Symptômes · 9 min · publié le 21 mai 2024

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.

Réponse directe

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.

liens spam footer liens japonais site spam links wordpress

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`.

Un lien spam n'est pas une pub AdSense mal placée. AdSense a un identifiant que vous reconnaissez. Ici, les domaines pointent vers des pharmacies ou des casinos que vous n'avez jamais contractés.

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.

Faites une copie de la base avant toute requête de nettoyage. Une `UPDATE` trop large sur `post_content` casse des pages que vous n'aviez pas l'intention de toucher.

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.

Si vous avez un constructeur de pages, le footer « global » et le footer du thème sont deux endroits. Nettoyer l'un sans l'autre laisse le lien sur la moitié du site.

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.

Questions fréquentes

Puis-je simplement retirer les liens dans l'éditeur visuel ?

+
Vous pouvez, et vous devez, une fois le générateur coupé. Les retirer avant, c'est les voir revenir. Si vous n'avez pas encore ouvert la base et les cron, l'édition manuelle est provisoire.

Les liens n'apparaissent que dans Google, pas sur mon écran. Le site est-il propre ?

+
Non. C'est le cas le plus fréquent du cloaking : le script reconnaît Googlebot. Faites une inspection d'URL dans Search Console et comparez le HTML. Votre session admin n'est pas un feu vert.

Un plugin SEO a-t-il pu poser ces liens tout seul ?

+
Yoast ou Rank Math ne posent pas de liens casino. En revanche, un champ « code dans le footer » de n'importe quel plugin a pu être rempli par quelqu'un qui avait un accès admin. Le plugin n'est pas la cause ; le compte ou la faille l'est.

Faut-il supprimer les vieux articles touchés ?

+
Non. Corrigez le contenu, gardez l'URL. Supprimer un billet de 2019 pour un paragraphe injecté vous coûte plus en référencement que l'injection elle-même. Réservez le 410 aux pages créées par l'attaquant.

Combien de temps avant que Google oublie les extraits sales ?

+
Une fois le HTML propre servi au robot : souvent quelques jours pour les pages réindexées à la demande, une à plusieurs semaines pour un volume important. Ce n'est pas l'horloge Safe Browsing (24 à 72 h), qui ne s'applique pas à ce cas.
À lire ensuite
Pages spam dans Google Spam SEO japonais Articles WordPress inconnus Must-use plugin caché Fichiers du thème modifiés Déclarer mon site