Durcissement

Commentaires HTML et balise generator : effacer les traces de WordPress

Commentaires HTML et balise generator : effacer les traces de WordPress

Ouvrez le code source de votre page d’accueil : il y a de bonnes chances d’y lire « This site is optimized with the Yoast SEO plugin v28.8 », « Site Kit by Google 1.190.0 » ou « Elementor 4.3.5 ». Ces signatures donnent le nom d’extensions qui n’existent que pour WordPress, souvent avec leur numéro de version. Cet article liste ce que les extensions courantes écrivent dans vos pages, explique comment Masquerade Security (version gratuite) l’efface et comment le vérifier vous-même.

Ce que les extensions écrivent dans votre code source

Deux types de traces se cachent dans le HTML que reçoit chaque visiteur :

  • La balise generator : <meta name="generator" content="...">, prévue par le HTML pour nommer le logiciel qui a produit la page. WordPress y met sa version, Site Kit, Elementor ou WooCommerce aussi.
  • Les commentaires HTML : <!-- ... -->, invisibles à l’écran mais lisibles dans le code source. Les extensions SEO y encadrent leurs balises, celles de statistiques signent leur code de suivi, et les caches notent l’outil qui a enregistré la page.
Deux extraits du même en-tête HTML. Avant le masquage : commentaires de Yoast SEO 28.8 et de Site Kit, balises generator de WordPress, de Site Kit by Google 1.190.0 et d’Elementor 4.3.5, surlignés en rouge. Après le masquage : il ne reste que le titre, le script de Google et la balise generator de Joomla!, surlignée en vert.
Le même en-tête, vu par un visiteur anonyme, sans puis avec le masquage (extrait simplifié).

Ces lignes ne servent à aucun visiteur. Plusieurs éditeurs prévoient un filtre pour les retirer, mais rarement une option visible.

Pourquoi ces traces comptent

Les outils de détection lisent précisément ces lignes. Comme nous l’expliquions dans notre article sur le fingerprinting de WordPress, un seul signal suffit à les convaincre :

  • Elles révèlent WordPress. Dans les définitions de Wappalyzer (projet webappanalyzer), le commentaire de Yoast SEO suffit à conclure à WordPress. Une balise generator Elementor ou Site Kit le dit aussi clairement : ces extensions n’existent que pour WordPress.
  • Elles donnent des numéros de version. Les mêmes définitions extraient la version de Yoast SEO, d’Elementor et de Site Kit. Une version précise se compare en quelques secondes aux bases de failles publiques, d’où l’intérêt de surveiller les vulnérabilités de vos extensions.
  • Elles listent vos extensions sans requête supplémentaire. WPScan possède un détecteur dédié qui lit tous les commentaires HTML de la page et les compare aux motifs connus de chaque extension.
  • Elles contredisent l’imitation. Un site qui annonce Joomla! dans sa balise generator mais garde un commentaire de Rank Math est démasqué par n’importe quel curieux qui affiche le code source.

Retirer ces traces ne corrige aucune faille : cela réduit ce que les robots apprennent d’une simple visite. Nous détaillons ce que le masquage peut et ne peut pas faire dans masquer WordPress : ce que ça apporte, ce que ça ne fait pas.

Ce que Masquerade Security retire, extension par extension

Voici les traces retirées par la version gratuite, vérifiées dans le code de chaque extension et, pour les lignes « testé », sur un site réel. Dans la colonne « Retiré par », « officiel » désigne le réglage prévu par l’éditeur et « filtre » le filtre de sortie décrit plus bas.

ExtensionTrace retiréeRetiré parPages en cache
Yoast SEO (testé, 28.8)Commentaires optimized with the Yoast SEO plugin v{version}, Premium comprisOfficiel, filtre en secoursPropres
Rank Math (testé)Commentaires Search Engine Optimization by Rank Math, même traduitsOfficiel et filtrePropres
All in One SEOGenerator All in One SEO (AIOSEO) {version} et commentairesOfficiel (balise), filtre (commentaires)Propres
The SEO FrameworkCommentaires The SEO Framework by Sybre Waaijer, même traduitsOfficiel et filtrePropres
Site Kit by Google (testé, 1.190.0)Generator Site Kit by Google {version}, commentaires added by Site KitOfficiel (balise), filtre (commentaires)Propres
MonsterInsights, ExactMetrics, GTM4WP, Matomo, pixels Meta, JetpackCommentaires signés, avec version pour MonsterInsights et ExactMetricsFiltrePropres
WP Statistics, ComplianzCommentaires signésOfficiel et filtrePropres
WP Super Cache (testé)Cached page generated by WP-Super-Cache, Dynamic page generated in...Officiel (comme décocher « Cache Status Messages »)Propres, fichier vérifié
LiteSpeed Cache (testé, 7.9.2)Page cached by LiteSpeed Cache {version}, Page optimized by LiteSpeed CacheOfficiel et dernier filtre du cachePropres
W3 Total Cache, WP Fastest Cache, WP-OptimizeCommentaires de cache signésOfficiel (et filtre pour WP-Optimize)Propres (WP-Optimize : sauf avec WP_DEBUG)
Hummingbirdcached by the Hummingbird Performance plugin v{version}Dernier filtre du cachePropres
WP RocketThis website is like a Rocket... WP RocketConstante officielleRemplacé par un texte générique
BreezeCache served by breeze CACHENon retiréNon
Elementor (testé, 4.3.5)Generator Elementor {version}; features: ...; settings: ...Officiel (« Generator Tag », réglage enregistré intact) et filtrePropres
WPBakery, Slider Revolution, Divi, ReduxGenerator avec nom et souvent versionFiltrePropres
WooCommerce, WPMLGenerator WooCommerce {version}, WPML ver:{version}Module Identité (WooCommerce), filtre (WPML)Propres
WordPress lui-mêmeGenerator, commentaires citant WordPress, wp-content, wp-json...Module Identité et filtrePropres
Textes de WPBakery tirés de sa documentation ; ceux de Slider Revolution et de Divi n’ont pas pu être vérifiés dans le code. SEOPress et Slim SEO n’écrivent rien de public.

D’autres noms sont reconnus par précaution, sans vérification une à une dans le code : Avada, Oxygen, Bricks, Beaver Builder, Astra, Kadence, Smush ou Polylang, par exemple.

Comment c’est retiré : le réglage officiel d’abord

L’extension applique trois méthodes, dans cet ordre :

  1. Le réglage officiel de chaque extension : un filtre, une option ou une constante prévus par son éditeur (par exemple wpseo_debug_markers pour Yoast SEO ou litespeed_comment pour LiteSpeed Cache). C’est la méthode la plus fiable, et elle agit aussi sur la page que le cache enregistre. Vos réglages enregistrés ne changent pas.
  2. Un filtre de sortie sur la page HTML, pour tout ce qui n’a pas de réglage. Il ne touche que les pages publiques demandées en GET ou HEAD (ni l’administration, ni AJAX, l’API REST, les flux, les plans de site ou robots.txt). Au-delà de 4 Mo ou en cas d’erreur, la page part telle quelle.
  3. Le dernier filtre du cache, pour LiteSpeed Cache et Hummingbird, qui ajoutent leur commentaire après le filtre de sortie.

L’ordre compte : lors de nos tests sans les réglages officiels, le filtre de sortie seul retirait les traces de Yoast SEO, Rank Math, Site Kit et Elementor, mais pas celles de LiteSpeed Cache, ajoutées après lui. La détection repose sur les noms de marque, pas sur des phrases ; les commentaires traduits par Rank Math, Site Kit ou The SEO Framework sont donc retirés eux aussi.

Schéma en deux parties. En haut, les trois méthodes dans l’ordre : réglage officiel de l’extension, filtre de sortie sur la page, dernier filtre du cache pour LiteSpeed Cache et Hummingbird. En bas, trois colonnes : ce qui est retiré (balises generator, commentaires signés, y compris traduits), ce qui est gardé (generator imité, scripts et JSON-LD, commentaires conditionnels, repères des caches, commentaires neutres sauf option) et ce qui sort du périmètre (Breeze, commentaire générique de WP Rocket, pages déjà en cache, en-têtes HTTP, classes CSS, adresses de fichiers).
Trois méthodes, dans cet ordre, et la frontière entre ce qui est retiré, gardé ou hors périmètre.

Ce qui est gardé volontairement

Pour ne rien casser, restent en place :

  • la balise generator du logiciel imité (niveau 2 et plus du module Identité), par exemple Joomla! - Open Source Content Management ;
  • tout le contenu des balises script (JSON-LD compris), style, pre, textarea, svg et template ;
  • les commentaires conditionnels d’Internet Explorer (<!--[if ...]>) ;
  • les repères dont les caches ont besoin : noptimize, mfunc, mclude, dynamic-cached-content, esi ;
  • les commentaires neutres de votre thème (« .site-header », « Main navigation »), sauf si vous cochez l’option décrite plus bas.

Les limites à connaître

  • Breeze écrit son commentaire dans son fichier de cache, sans filtre ni réglage : il reste.
  • WP Rocket ne permet pas de supprimer son commentaire : il devient <!-- Cached for great performance -->, sans nom d’extension ni WordPress.
  • Les pages déjà en cache avant l’activation gardent leurs commentaires jusqu’à la purge du cache.
  • Les caches de serveur et les CDN (Varnish, Cloudflare, cache d’hébergeur) servent la page enregistrée : elle est propre si elle a été enregistrée après l’activation, mais leurs en-têtes HTTP restent.
  • Ce qui n’est ni un commentaire ni une balise generator n’est pas concerné : en-têtes HTTP (X-LiteSpeed-Cache, cf-edge-cache: cache,platform=wordpress de Cloudflare APO), classes CSS (elementor-, woocommerce, yoast-schema-graph), variables JavaScript, contenu JSON-LD, adresses de fichiers et paramètre ?ver=.
  • Les visiteurs connectés voient le site sans masquage.

Gardez surtout en tête ceci : tant que les adresses /wp-content/plugins/... restent dans la page, Wappalyzer reconnaît WordPress. Effacer les commentaires retire surtout les noms et les versions ; pour aller plus loin, les alias des adresses de fichiers de WP Masquerade Pro renomment ces chemins.

Vérifier votre propre site

Faites le test avant et après l’activation, toujours en visiteur anonyme :

  1. Ouvrez une fenêtre de navigation privée, déconnecté de WordPress.
  2. Affichez le code source de l’accueil et d’un article (Ctrl+U, ou Cmd+Option+U sur Mac).
  3. Recherchez (Ctrl+F) <!--, puis name="generator", puis le nom de vos extensions.
  4. Rechargez la page : la première visite remplit souvent le cache, la seconde montre la page servie par le cache.

En ligne de commande :

curl -s https://www.example.com/ | grep -n -E "<!--|name=\"generator\""

Seuls doivent rester la balise du logiciel imité, les commentaires conditionnels, les repères des caches et, sans l’option, les commentaires neutres du thème. La vidéo ci-dessous montre ce que repère un curieux.

Comment reconnaître un site WordPress en quelques secondes (en français).

Activer la fonction

  1. Ouvrez Masquerade Security (icône de masque dans le menu d’administration).
  2. Choisissez un mode (Essentiel, Recommandé ou Maximum) ou réglez le module Identité au moins au niveau 1 (« Masquer WordPress ») : les traces sont retirées dès ce niveau.
  3. Activez l’interrupteur « Camouflage actif » et enregistrez.
  4. Facultatif : dans l’onglet Identité, cochez « Supprimer tous les commentaires HTML des pages publiques ». Désactivée par défaut, cette option retire aussi les commentaires neutres, mais garde les commentaires conditionnels, les repères des caches et le commentaire de couverture (niveau 4, Pro).
  5. Cliquez sur Purger les caches (onglet Diagnostic), videz aussi le cache de l’hébergeur ou du CDN, puis vérifiez.

La purge intégrée couvre LiteSpeed Cache, WP Super Cache et WP Rocket ; les détails par hébergeur figurent sur la page compatibilité hébergeurs et caches.

Gratuit ou Pro

Le retrait des traces des extensions fait partie de la version gratuite, sans limite ni clé de licence. WP Masquerade Pro s’occupe des autres signaux :

FonctionGratuitPro
Commentaires HTML et balises generator des extensions retirésOuiOui
Option « Supprimer tous les commentaires HTML »OuiOui
Generator WordPress retiré, balise d’un autre logiciel5 profils ou nom libre41 profils
Liens RSD, Windows Live Writer et liens courts retirésOuiOui
Annonce de l’API REST (balise et en-tête HTTP Link) et découverte oEmbed retiréesNonOui
Alias des adresses de fichiers (/wp-content/, /wp-includes/)NonOui
Marqueurs reconnus par Wappalyzer et commentaire de couverture du logiciel imitéNonOui
Fonctions liées aux traces de WordPress.

Détails sur les liens techniques, l’imitation d’un autre CMS et dans le comparatif. Téléchargez la version gratuite ou voyez les tarifs de Pro, dès 59 € HT par an.

À retenir

  • Yoast SEO, Site Kit, Elementor et les caches signent vos pages, souvent avec leur version.
  • Le commentaire de Yoast SEO suffit à Wappalyzer pour conclure à WordPress, et WPScan lit les commentaires HTML pour lister vos extensions.
  • Masquerade Security, gratuit, les retire dès le niveau 1 du module Identité : réglage officiel d’abord, filtre de sortie ensuite.
  • Limites : Breeze, WP Rocket (texte générique), pages déjà en cache (purgez), en-têtes HTTP, adresses de fichiers.
  • Vérifiez en navigation privée : cherchez <!-- et generator dans le code source.

Sources

  • WordPress Developer : get_the_generator() (lien externe, nouvel onglet)
  • MDN : la balise meta name, valeur generator (lien externe, nouvel onglet)
  • WordPress.org : Yoast SEO (lien externe, nouvel onglet)
  • WordPress.org : Site Kit by Google (lien externe, nouvel onglet)

Autres sources consultées : pages officielles des éditeurs.

La sécurité WordPress, sans le bruit

Un e-mail quand ça compte : nouvelles attaques observées, mises à jour de l’extension et guides pratiques. Pas de spam, désinscription en un clic.

Commencez gratuitement, passez à Pro quand vous êtes prêt

La version gratuite masque déjà WordPress et déplace la page de connexion. Pro ajoute alias, double authentification et surveillance.