Hardening

Commenti HTML e tag generator: cancellare le tracce di WordPress

Commenti HTML e tag generator: cancellare le tracce di WordPress

Apri il codice sorgente della tua home page: con buona probabilità ci leggerai «This site is optimized with the Yoast SEO plugin v28.8», «Site Kit by Google 1.190.0» o «Elementor 4.3.5». Queste firme nominano plugin che esistono solo per WordPress, spesso con il numero di versione. Questo articolo elenca ciò che i plugin più diffusi scrivono nelle tue pagine, spiega come Masquerade Security (versione gratuita) lo rimuove e come verificarlo da solo.

Cosa scrivono i plugin nel tuo codice sorgente

Due tipi di tracce si nascondono nell’HTML che riceve ogni visitatore:

  • Il tag generator: <meta name="generator" content="...">, previsto dall’HTML per indicare il software che ha prodotto la pagina. WordPress ci mette la sua versione, e così Site Kit, Elementor o WooCommerce.
  • I commenti HTML: <!-- ... -->, invisibili sullo schermo ma leggibili nel codice sorgente. I plugin SEO ci racchiudono i loro tag, quelli di statistiche firmano il codice di tracciamento e le cache annotano lo strumento che ha salvato la pagina.
Due estratti della stessa intestazione HTML. Prima del mascheramento: commenti di Yoast SEO 28.8 e di Site Kit, tag generator di WordPress, di Site Kit by Google 1.190.0 e di Elementor 4.3.5, evidenziati in rosso. Dopo il mascheramento: restano solo il titolo, lo script di Google e il tag generator di Joomla!, evidenziato in verde.
La stessa intestazione, vista da un visitatore anonimo, senza e con il mascheramento (estratto semplificato).

Queste righe non servono a nessun visitatore. Diversi sviluppatori prevedono un filtro per rimuoverle, ma raramente un’opzione visibile.

Perché queste tracce contano

Gli strumenti di rilevamento leggono proprio queste righe. Come spiegato nel nostro articolo sul fingerprinting di WordPress, basta un solo segnale per convincerli:

  • Rivelano WordPress. Nelle definizioni di Wappalyzer (progetto webappanalyzer), il commento di Yoast SEO basta per concludere che si tratta di WordPress. Un tag generator di Elementor o di Site Kit lo dice con la stessa chiarezza: questi plugin esistono solo per WordPress.
  • Forniscono numeri di versione. Le stesse definizioni estraggono la versione di Yoast SEO, Elementor e Site Kit. Una versione precisa si confronta in pochi secondi con i database pubblici delle vulnerabilità: ecco perché conviene monitorare le vulnerabilità dei tuoi plugin.
  • Elencano i tuoi plugin senza richieste aggiuntive. WPScan ha un rilevatore dedicato che legge tutti i commenti HTML della pagina e li confronta con gli schemi noti di ogni plugin.
  • Contraddicono l’imitazione. Un sito che annuncia Joomla! nel tag generator ma conserva un commento di Rank Math viene smascherato da qualunque curioso che guardi il codice sorgente.

Rimuovere queste tracce non corregge alcuna vulnerabilità: riduce ciò che i bot imparano con una semplice visita. Spieghiamo cosa può e non può fare il mascheramento in mascherare WordPress: che cosa offre e che cosa non fa.

Cosa rimuove Masquerade Security, plugin per plugin

Ecco le tracce rimosse dalla versione gratuita, verificate nel codice di ogni plugin e, per le righe con «testato», su un sito reale. Nella colonna «Rimosso da», «ufficiale» indica l’impostazione prevista dallo sviluppatore e «filtro» il filtro di output descritto più avanti.

PluginTraccia rimossaRimosso daPagine in cache
Yoast SEO (testato, 28.8)Commenti optimized with the Yoast SEO plugin v{version}, Premium inclusoUfficiale, filtro di riservaPulite
Rank Math (testato)Commenti Search Engine Optimization by Rank Math, anche tradottiUfficiale e filtroPulite
All in One SEOGenerator All in One SEO (AIOSEO) {version} e commentiUfficiale (tag), filtro (commenti)Pulite
The SEO FrameworkCommenti The SEO Framework by Sybre Waaijer, anche tradottiUfficiale e filtroPulite
Site Kit by Google (testato, 1.190.0)Generator Site Kit by Google {version}, commenti added by Site KitUfficiale (tag), filtro (commenti)Pulite
MonsterInsights, ExactMetrics, GTM4WP, Matomo, pixel di Meta, JetpackCommenti firmati, con la versione per MonsterInsights ed ExactMetricsFiltroPulite
WP Statistics, ComplianzCommenti firmatiUfficiale e filtroPulite
WP Super Cache (testato)Cached page generated by WP-Super-Cache, Dynamic page generated in...Ufficiale (come togliere la spunta a «Cache Status Messages»)Pulite, file di cache verificato
LiteSpeed Cache (testato, 7.9.2)Page cached by LiteSpeed Cache {version}, Page optimized by LiteSpeed CacheUfficiale e ultimo filtro della cachePulite
W3 Total Cache, WP Fastest Cache, WP-OptimizeCommenti di cache firmatiUfficiale (e filtro per WP-Optimize)Pulite (WP-Optimize: tranne con WP_DEBUG)
Hummingbirdcached by the Hummingbird Performance plugin v{version}Ultimo filtro della cachePulite
WP RocketThis website is like a Rocket... WP RocketCostante ufficialeSostituito da un testo generico
BreezeCache served by breeze CACHENon rimossoNo
Elementor (testato, 4.3.5)Generator Elementor {version}; features: ...; settings: ...Ufficiale («Generator Tag», impostazione salvata intatta) e filtroPulite
WPBakery, Slider Revolution, Divi, ReduxGenerator con il nome e spesso la versioneFiltroPulite
WooCommerce, WPMLGenerator WooCommerce {version}, WPML ver:{version}Modulo Identità (WooCommerce), filtro (WPML)Pulite
WordPress stessoGenerator, commenti che citano WordPress, wp-content, wp-json...Modulo Identità e filtroPulite
I testi di WPBakery provengono dalla sua documentazione; quelli di Slider Revolution e Divi non è stato possibile verificarli nel codice. SEOPress e Slim SEO non scrivono nulla di pubblico.

Altri nomi vengono riconosciuti per precauzione, senza essere verificati uno per uno nel codice: per esempio Avada, Oxygen, Bricks, Beaver Builder, Astra, Kadence, Smush o Polylang.

Come viene rimosso: prima l’impostazione ufficiale

Il plugin applica tre metodi, in quest’ordine:

  1. L’impostazione ufficiale di ogni plugin: un filtro, un’opzione o una costante previsti dallo sviluppatore (per esempio wpseo_debug_markers per Yoast SEO o litespeed_comment per LiteSpeed Cache). È il metodo più affidabile e agisce anche sulla pagina salvata dalla cache. Le impostazioni che hai salvato non cambiano.
  2. Un filtro di output sulla pagina HTML, per tutto ciò che non ha un’impostazione. Riguarda solo le pagine pubbliche richieste in GET o HEAD (non l’amministrazione, AJAX, l’API REST, i feed, le sitemap o robots.txt). Oltre i 4 MB o in caso di errore, la pagina viene inviata così com’è.
  3. L’ultimo filtro della cache, per LiteSpeed Cache e Hummingbird, che aggiungono il loro commento dopo il filtro di output.

L’ordine conta: nei nostri test senza le impostazioni ufficiali, il solo filtro di output rimuoveva le tracce di Yoast SEO, Rank Math, Site Kit ed Elementor, ma non quelle di LiteSpeed Cache, aggiunte dopo. Il rilevamento si basa sui nomi dei marchi, non sulle frasi: per questo vengono rimossi anche i commenti tradotti da Rank Math, Site Kit o The SEO Framework.

Schema in due parti. In alto, i tre metodi in ordine: impostazione ufficiale del plugin, filtro di output sulla pagina, ultimo filtro della cache per LiteSpeed Cache e Hummingbird. In basso, tre colonne: cosa viene rimosso (tag generator, commenti firmati, anche tradotti), cosa viene mantenuto (generator imitato, script e JSON-LD, commenti condizionali, marcatori delle cache, commenti neutri salvo con l’opzione) e cosa resta fuori (Breeze, commento generico di WP Rocket, pagine già in cache, intestazioni HTTP, classi CSS, indirizzi dei file).
Tre metodi, in quest’ordine, e il confine tra ciò che viene rimosso, mantenuto o resta fuori.

Cosa viene mantenuto di proposito

Per non rompere nulla, restano al loro posto:

  • il tag generator del software imitato (livello 2 e oltre del modulo Identità), per esempio Joomla! - Open Source Content Management;
  • tutto il contenuto dei tag script (JSON-LD compreso), style, pre, textarea, svg e template;
  • i commenti condizionali di Internet Explorer (<!--[if ...]>);
  • i marcatori di cui hanno bisogno le cache: noptimize, mfunc, mclude, dynamic-cached-content, esi;
  • i commenti neutri del tuo tema («.site-header», «Main navigation»), a meno che tu non attivi l’opzione descritta più avanti.

I limiti da conoscere

  • Breeze scrive il suo commento nel file di cache, senza filtro né impostazione: resta.
  • WP Rocket non permette di rimuovere il suo commento: diventa <!-- Cached for great performance -->, senza nome del plugin né WordPress.
  • Le pagine già in cache prima dell’attivazione conservano i loro commenti fino allo svuotamento della cache.
  • Le cache del server e le CDN (Varnish, Cloudflare, cache dell’hosting) servono la pagina salvata: è pulita se è stata salvata dopo l’attivazione, ma le loro intestazioni HTTP restano.
  • Ciò che non è né un commento né un tag generator resta fuori: intestazioni HTTP (X-LiteSpeed-Cache, cf-edge-cache: cache,platform=wordpress di Cloudflare APO), classi CSS (elementor-, woocommerce, yoast-schema-graph), variabili JavaScript, contenuto JSON-LD, indirizzi dei file e parametro ?ver=.
  • I visitatori connessi vedono il sito senza mascheramento.

Soprattutto, tieni a mente questo: finché gli indirizzi /wp-content/plugins/... restano nella pagina, Wappalyzer riconosce WordPress. Rimuovere i commenti elimina soprattutto nomi e versioni; per andare oltre, gli alias degli indirizzi dei file di WP Masquerade Pro rinominano questi percorsi.

Verifica il tuo sito

Fai il test prima e dopo l’attivazione, sempre come visitatore anonimo:

  1. Apri una finestra di navigazione privata, senza essere connesso a WordPress.
  2. Visualizza il codice sorgente della home page e di un articolo (Ctrl+U, oppure Cmd+Option+U su Mac).
  3. Cerca (Ctrl+F) <!--, poi name="generator", poi il nome dei tuoi plugin.
  4. Ricarica la pagina: la prima visita spesso riempie la cache, la seconda mostra la pagina servita dalla cache.

Da riga di comando:

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

Devono restare solo il tag del software imitato, i commenti condizionali, i marcatori delle cache e, senza l’opzione, i commenti neutri del tema. Il video qui sotto mostra cosa nota un curioso.

Come riconoscere un sito WordPress in pochi secondi (in francese).

Attivare la funzione

  1. Apri Masquerade Security (l’icona a forma di maschera nel menu di amministrazione).
  2. Scegli una modalità (Essenziale, Consigliato o Massimo) oppure imposta il modulo Identità almeno al livello 1 («Nascondi WordPress»): le tracce vengono rimosse da questo livello.
  3. Attiva l’interruttore «Mascheramento attivo» e salva.
  4. Facoltativo: nella scheda Identità, spunta «Rimuovi tutti i commenti HTML dalle pagine pubbliche». Disattivata per impostazione predefinita, questa opzione rimuove anche i commenti neutri, ma mantiene i commenti condizionali, i marcatori delle cache e il commento di copertura (livello 4, Pro).
  5. Clicca su Svuota le cache (scheda Diagnostica), svuota anche la cache dell’hosting o della CDN, poi verifica.

Lo svuotamento integrato copre LiteSpeed Cache, WP Super Cache e WP Rocket; i dettagli per hosting sono nella pagina compatibilità con hosting e cache.

Gratuito o Pro

La rimozione delle tracce dei plugin fa parte della versione gratuita, senza limiti né chiave di licenza. WP Masquerade Pro si occupa degli altri segnali:

FunzioneGratuitoPro
Commenti HTML e tag generator dei plugin rimossiSìSì
Opzione «Rimuovi tutti i commenti HTML»SìSì
Generator di WordPress rimosso, tag di un altro software5 profili o nome libero41 profili
Link RSD, Windows Live Writer e link brevi rimossiSìSì
Annuncio dell’API REST (tag e intestazione HTTP Link) e individuazione oEmbed rimossiNoSì
Alias degli indirizzi dei file (/wp-content/, /wp-includes/)NoSì
Marcatori riconosciuti da Wappalyzer e commento di copertura del software imitatoNoSì
Funzioni legate alle tracce di WordPress.

Dettagli sui link tecnici, sull’imitazione di un altro CMS e nel confronto. Scarica la versione gratuita o guarda i prezzi di Pro, da 59 € + IVA all’anno.

Da ricordare

  • Yoast SEO, Site Kit, Elementor e le cache firmano le tue pagine, spesso con la versione.
  • Il commento di Yoast SEO basta a Wappalyzer per concludere che si tratta di WordPress, e WPScan legge i commenti HTML per elencare i tuoi plugin.
  • Masquerade Security, gratuito, li rimuove dal livello 1 del modulo Identità: prima l’impostazione ufficiale, poi il filtro di output.
  • Limiti: Breeze, WP Rocket (testo generico), pagine già in cache (svuotale), intestazioni HTTP, indirizzi dei file.
  • Verifica in navigazione privata: cerca <!-- e generator nel codice sorgente.

Fonti

  • WordPress Developer: get_the_generator() (link esterno, si apre in una nuova scheda)
  • MDN: l’attributo name di meta, valore generator (link esterno, si apre in una nuova scheda)
  • WordPress.org: Yoast SEO (link esterno, si apre in una nuova scheda)
  • WordPress.org: Site Kit by Google (link esterno, si apre in una nuova scheda)

Altre fonti consultate: pagine ufficiali dei produttori.

Sicurezza WordPress, senza rumore

Un’email quando conta: nuovi attacchi osservati, aggiornamenti del plugin e guide pratiche. Niente spam, disiscrizione con un clic.

Inizia gratis, passa a Pro quando sei pronto

La versione gratuita nasconde già WordPress e sposta la pagina di login. Pro aggiunge alias, autenticazione a due fattori e monitoraggio.