Seleziona la tua lingua

 

Cos'è la Negative SEO?

La Negative SEO è un insieme di operazioni malevole che hanno lo scopo di ridurre il posizionamento e la visibilità del tuo sito web nei risultati dei motori di ricerca.
I responsabili di queste malefatte sono spesso individui pagati dai tuoi competitor che tentano di scaraventare fuori dalle SERP i siti web antagonisti.

Mentre l'implementazione di alcune operazioni di Negative SEO (On-Page) prevede l'intervento di esperti di hacking per “cambiare” le tue pagine web, altre possono essere attuate sfruttando tecniche Off-Page, e quindi operando al di fuori del sito vittima.

In questo articolo imparerai come proteggere il tuo sito web Joomla per evitare uno degli attacchi Off-Page potenzialmente più nocivi: Injection e Parameter Pollution.

 

Injection e Parameter Pollution

L'attacco tramite Injection e Parameter Pollution è uno degli attacchi Off-Page più semplice da compiere.
Esso infatti utilizza i backlink, ossia gli URL verso le pagine del tuo sito web, per consumare il crawl budget e, nel peggiore dei casi, associare il tuo dominio a query spam.

Il crawl budget è la quantità di risorse (tempo e capacità) che un motore di ricerca dedica alla scansione delle pagine di un sito web ma, come spiegato da John Mueller di Google a un utente su Reddit, il crawl budget è davvero un problema solo per i siti di grandi dimensioni, ossia con più di 10.000 pagine uniche.

Crawl budget is really just a problem for massive sites~ John Mueller

Allora tutto a posto?

No, neanche per sogno, perché i backlink con query spam possono provocare seri danni all'indicizzazione del tuo sito web se questo non gestisce correttamente il tag rel canonical.

Se in questo tag, che segnala ai motori di ricerca qual è l'indirizzo “canonico” delle tue pagine web da mostrare sulle SERP, finiscono parole non desiderate (es. porno, viagra, poker, ecc), allora sei la potenziale vittima per un canonical attack!
Il danno è assicurato... e non sarà semplice ripararlo!

Per eseguire un canonical attack tramite Injection e Parameter Pollution è sufficiente linkare una o più pagine del tuo sito web aggiungendo parametri nocivi all'indirizzo:

www.tuosito.it/tua-pagina?spam=viagra-online

L'attacco è più cattivo se proviene da link farm, cioè da un insieme di siti di bassa qualità costruiti per tecniche di black-hat (prima) e negative SEO (ora) ma, se l'obiettivo è un sito web con un numero di pagine minore di cento, può colpire e andare a segno anche con poche decine di backlink provenienti da siti non sospetti.

In una situazione del genere, se le tue pagine non comunicano ai motori di ricerca qual è il loro URL canonico, potrebbero apparire nelle SERP in relazione alle query spam... o non apparire per niente perché inserite in una black-list.
I risultati sarebbero devastanti per sito web, prodotti e brand.

E se credi di essere al sicuro perché sul tuo sito Joomla hai configurato la funzionalità tag rel canonical con il core plugin Sistema - SEF, mi dispiace dirtelo ma non è così!

 

I difetti del plugin SEF di Joomla

Dalla versione 4 di Joomla! è presente un core plugin chiamato “Sistema - SEF”.
Questo aggiunge il supporto SEF ai link nei tuoi contenuti e opzionalmente permette di specificare il parametro Dominio del sito.
Cito testualmente la descrizione del parametro:

Se si può accedere al tuo sito da più di un dominio, qui inserisci quello preferito (alcune volte indicato come canonical).
Nota: https://example.com e https://www.example.com sono domini diversi.

Valorizzando questo parametro, il tag rel canonical viene inserito nelle pagine del tuo sito web.

Sembra tutto ok, ma in realtà l'URL canonico inserito viene estrapolato senza effettuare nessuna operazione di routing che coinvolga la scansione dell'albero di navigazione del sito, ma semplicemente utilizzando l'URL della pagina corrente così com'è (o quasi).

Questo, oltre a non proporre in ogni situazione l'URL canonico corretto, espone il tuo sito web a:

  1. Contenuti duplicati
  2. Canonical attack.

 

Contenuti duplicati

Prendiamo un semplice sito web aziendale che tra i contenuti ha tre articoli che descrivono alcuni aspetti importanti dell'azienda:

  • 30 years of experience in innovative technology
  • Quality & Management ISO certification
  • Daily commitment to sustainability and corporate ethics.

Questi articoli fanno parte della categoria The company che può essere raggiunta dalla corrispettiva voce di menu.
Sotto questa sono presenti tre sotto voci di menu:

  • About us, collegata all'articolo 30 years of experience in innovative technology
  • ISO certification, collegata all'articolo Quality & Management ISO certification
  • Sustainability & Ethics, collegata all'articolo Daily commitment to sustainability and corporate ethics.
Le voci di menu collegate agli articoli

 

Questo sito web di test, creato con Joomla! 6, gira sotto Apache sulla mia workstation Linux all'indirizzo

http://localhost/joomla6/

Nel plugin Sistema - SEF ho specificato il Dominio del sito e abilitato tutte le funzionalità di routing e redirect presenti.
Tale configurazione inserisce il tag rel canonical nelle pagine del sito web e dovrebbe quindi impedire la presenza di contenuti duplicati, ma nei fatti non lo fa.

Le impostazioni del plugin Sistema -SEF di Joomla

 

Visitando la voce “About us” e mostrando il sorgente HTML dell'articolo, notiamo che è stato inserito il tag rel canonical che specifica correttamente l'URL canonico

http://localhost/joomla6/the-company/about-us

 

  Il sorgente HTML dell'articolo con l'URL canonico corretto

 

È però possibile visualizzare questo articolo anche visitando altri indirizzi, come ad esempio questo:

http://localhost/joomla6/the-company/30-years-of-experience-in-innovative-technology

Stesso articolo, stessi contenuti.
L'URL canonico dovrebbe essere uguale a quello della voce di menu “About us”...

 

  Errore! Stesso articolo, stessi contenuti, URL canonico diverso

 

... ma come vediamo non è così, e questo è un problema!

Agli occhi dei motori di ricerca, il nostro sito web diffonde contenuti duplicati.
Questa ridondanza di contenuti potrebbe essere interpretata come pratica fraudolenta e portare a una penalizzazione sulle SERP dell'intero sito web per keyword stuffing o spam.

E sfortunatamente non finisce qui...

 

Canonical attack!

Come ho già accennato in Injection e Parameter Pollution, questo tipo di attacco può arrecare danni devastanti, ma l'aspetto che deve più preoccuparti è che un canonical attack può essere perpetrato - e andare a segno - senza avere conoscenze di hacking o possedere una link-farm.
È sufficiente che il malintenzionato abbia un minimo di conoscenza HTML, uno spazio in rete dove poter linkare le pagine del tuo sito web, e che il tuo sito web non gestisca correttamente il tag rel canonical per le pagine.

Il sito web che ho usato nell'esempio dei contenuti duplicati è una vittima perfetta, poiché il plugin Sistema - SEF di Joomla non depura gli URL canonici da parametri extra.

Con questa premessa si possono aggiungere senza problemi delle query spam a qualsiasi indirizzo del sito web e avere la certezza che finiranno nell'URL canonico.
Digitiamo l'indirizzo della pagina “About us” aggiungendo i parametri extra che abbiamo deciso di usare per il nostro spam.

http://localhost/joomla6/the-company/about-us?daily-discount=viagra+60+pills

 

  Malissimo! Query spam nell'URL canonico

 

Attacco riuscito!
Le parole indesiderate sono finite nell'URL canonico che sarà letto dai motori di ricerca.

L'indirizzo malevolo finirà nelle SERP?
Dipende dal numero di link “sporchi” che l'aggressore riesce a spammare in rapporto ai link “puliti” del tuo sito web.

Un utente smaliziato può facilmente trovare in rete script in Python che postano automaticamente link su social e piattaforme di blogging.
Uomo avvisato...

 

Correggere i difetti e prevenire i danni

Sembra scontato, ma il detto “prevenire è meglio che curare” è quanto mai appropriato quando si parla di SEO, soprattutto quando è in gioco la brand reputation.
Se il tuo sito web è stato bersaglio di un attacco di negative SEO, recuperare un'indicizzazione sbagliata o uscire da una black-list non sono operazioni immediate... quindi vediamo come evitare l'attacco il più possibile.

Come hai visto, il core plugin “Sistema - SEF” di Joomla non è sufficiente per evitare contenuti duplicati e attacchi di negative SEO all'URL canonico.
Per correggere questi difetti, ho installato il nostro plugin Crusco Canonical URL sul sito web di test menzionato nei precedenti esempi.

Questo plugin rileva innanzitutto la configurazione del SEF di Joomla, segnala l'eventuale impostazione problematica, e suggerisce subito uno dei due metodi per aggirarla.

 

Il warning di Crusco Canonical URL sulla configurazione del plugin Sistema - Sef di Joomla

 

Oltre a un controllo completo e capillare sui rel tag canonical per la rimozione dei “contenuti duplicati”, Crusco Canonical URL implementa tre eccellenti caratteristiche per la concreta protezione contro i “canonical attack”:

  • Filtro query spam
  • Controllo dei termini di ricerca malevoli
  • Canonical URL personalizzato.

Ma partiamo dal primo round: Crusco Canonical URL vs. Contenuti duplicati.

 

Salutare i contenuti duplicati

Visitiamo la voce “About us” e andiamo a vedere il sorgente HTML dell'articolo:

 

 Il sorgente HTML mostra l'URL canonico corretto

 

L'URL canonico è corretto:

http://localhost/joomla6/the-company/about-us

L'attributo data-placedby (che si può rimuovere dalle opzioni) ci indica che il tag rel canonical è stato inserito da Crusco Canonical URL.
Ora accediamo all'articolo dall'indirizzo alternativo:

http://localhost/joomla6/the-company/30-years-of-experience-in-innovative-technology

 

  Perfetto! L'URL canonico non cambia se raggiungo lo stesso articolo da un altro indirizzo

 

Nel codice sorgente HTML leggiamo che l'URL canonico dell'articolo è rimasto lo stesso della pagina “About us” pur avendolo raggiunto da un URL differente.

Questo è il comportamento giusto!
Stiamo comunicando ai motori di ricerca che i contenuti raggiungibili da più di un URL non vanno considerati come duplicati, ma come risorse che fanno riferimento sempre alla stessa pagina, quella definita del tag rel canonical.

Prossimo round: Crusco Canonical URL vs. Canonical attack.

 

Affrontare i canonical attack

Come accennato poco sopra, Crusco Canonical URL dispone di tre funzionalità per difendere i siti web Joomla dai “canonical attack”:
  • Filtro query spam
  • Controllo dei termini di ricerca malevoli
  • Canonical URL personalizzato.

Verifichiamo il loro funzionamento sul solito sito web di test.

 

Filtro query spam

Aggiungiamo la nostra query spam all'indirizzo della pagina “About us” e controlliamo anche in questo caso il sorgente HTML.

 

http://localhost/joomla6/the-company/about-us?daily-discount=viagra+60+pills

 

  Attacco evitato! L'URL canonico è stato ripulito dalle query spam

 

Crusco Canonical URL ha individuato i parametri extra utilizzati per lo spam e li ha rimossi dall'URL canonico.
Il filtro query spam ha funzionato correttamente!

Occhio però, che questo tipo di attacco può essere attuato anche senza ricorrere a parametri extra, ma sfruttando lo spam injection tramite parametri testuali consentiti, come la query di una ricerca.

 

Controllo dei termini di ricerca malevoli

Qualsiasi interrogazione effettuata nel motore di ricerca interno a un sito web, fa finire le parole ricercate nell'indirizzo della pagina di ricerca stessa e anche nell'URL canonico.
Nel nostro sito web di test, creiamo una voce di menu di tipo Motore di ricerca -> Cerca e cerchiamo “certification”.

 

  Ricerca effettuata con il “Cerca” di Joomla

 

  Sorgente HTML: le parole cercate sono anche nell'URL canonico

 

La pagina di ricerca è dinamica: può restituire risultati e contenuti diversi.
È corretto quindi che l'URL canonico cambi e che lo faccia proprio grazie ai termini di ricerca.

Chiunque fa SEO professionale conosce questo comportamento e sa benissimo come sfruttarlo per posizionare sulle SERP pagine di ricerca “mirate” per determinate keyword.

Ad esempio, se Google Trends riporta nell'ultimo periodo un aumento significativo delle ricerche per il pittore (e scultore) “Umberto Boccioni” e il tuo sito web ha accumulato nel tempo alcuni articoli su questo artista, sarà molto utile preparare velocemente una pagina che raggruppi tali articoli.
La pagina è già bella che pronta e finita:

http://localhost/joomla6/search?q=umberto+boccioni

A questo punto non ci resta che suggerirla ai motori di ricerca e magari passarla a qualche nostro partner/referral che si occuperà di linkarla in social, articoli, guest post, ecc.

Tutto perfetto, ma cosa succede se tale opportunità è sfruttata anche dal malvivente di turno e non solo dal tuo specialista SEO?
Il parametro della query di ricerca è un vettore ideale per fare spam injection, e decine di link come questo

http://localhost/joomla6/search?q=free+porno+4k

possono essere già sufficienti per portare a termine con successo un “canonical attack”.

 

  Pagina di ricerca aperta da link con spam injection

 

  Boom! Lo spam è finito dell'URL canonico

 

Fortunatamente il plugin Crusco Canonical URL permette di evitare anche questo tipo di aggressione offrendo un controllo completo dei termini che finiscono sull'URL canonico delle pagine di ricerca:

  • Ignora tutti i termini di ricerca
  • Ignora ogni termine di ricerca tranne quelli specificati
  • Permette tutti i termini di ricerca
  • Permette tutti i termini di ricerca tranne quelli contenenti parole non desiderate

Ora regoliamo le situazioni degli esempi fatti poco sopra sul sito web di test.
L'obiettivo è quello di permettere nell'URL canonico le parole “umberto boccioni” e ignorare invece quelle di spam injection.
Con Crusco Canonical URL puoi raggiungere l'obiettivo in due modi, a seconda di come intendi esporre le tue pagine “cerca” ai motori di ricerca:

 

Modo 1: permettere solo “umberto boccioni” ed ignorare tutti gli altri termini

 

Modo 2: ignorare i termini che contengono le parole nella lista di esclusione, ma pernettere tutti gli altri

 

Per questo esempio abbiamo scelto il “Modo 1” e, come puoi vedere dal codice sorgente in HTML, i risultati sono quelli prefissati:

 

 

permettere l'indicizzazione delle sole pagine di ricerca mirate per le keywords scelte, e bloccare tutte le altre per evitare un “canonical attack“ perpetrato tramite spam injection nei termini di ricerca.

 

 L'URL canonico riporta correttamente l'unico termine ammesso “umberto boccioni”

 

 Lo spam injection nell'URL canonico è fallito perché questo è stato ripulito dai termini non ammessi

 

Canonical URL personalizzato

Nel malaugurato caso in cui il malintenzionato che ha preso di mira il tuo sito web, riesca a trovare un sotterfugio per evitare i filtri anti spam nell'URL canonico di una pagina, Crusco Canonical URL ti permette anche di inserire manualmente l'URL canonico e metterti così immediatamente al riparo.
Questo “override” uccide qualsiasi attacco di spam injection e query spam in quanto l'URL canonico inserito nel rel tag canonical sarà precisamente quello che hai specificato.

Supponiamo che la pagina weak-page sia stata oggetto di aggressione, e che ora il suo URL canonico sulle SERP sia

http://localhost/joomla6/weak-page?compromised=whateverspam

Per correggere questa situazione sarà sufficiente inserire un URL canonico personalizzato per quella pagina

http://localhost/joomla6/weak-page

e segnalare immediatamente la modifica tramite l'apposito tool dei motori di ricerca (es. Google Search Console).
Il crawler del motore di ricerca visiterà la tua pagina per scansionare le modifiche e acquisirà l'URL canonico corretto.

 

Conclusioni

In questo articolo hai visto quanto sia semplice per un qualsiasi utente smaliziato compiere azioni malevole per affossare il ranking SEO di un sito web.
Applicando la tecnica di Injection e Parameter Pollution è possibile perpetrare un attacco Off-Page di Negative SEO che può recare seri danni al sito web della vittima se questo non implementa correttamente il tag rel canonical.

Quello inserito dal core plugin “Sistema - SEF” di Joomla non elimina del tutto il problema dei contenuti duplicati e non applica nessun controllo di spam injection sui parametri degli URL esponendo il tuo sito web a questo tipo di attacchi.
Il malintenzionato di turno può così perpetrare e mandare a segno un “canonical attack” con conseguenze devastanti per posizionamento sulle SERP, prodotti e brand.

Ti abbiamo proposto e mostrato la nostra soluzione: Crusco Canonical URL.

È un plugin sviluppato da noi che perfeziona il “Sistema - SEF” di Joomla estirpando la scocciatura dei contenuti duplicati e offrendo ben tre caratteristiche per la protezione contro i “canonical attack”.

Che il level up sia con voi!

 

Avatar di Luca Gabbiati
Luca Gabbiati
SR Software Developer
Amo scrivere codice, imparare cose nuove e viaggiare leggendo un buon libro. Il software e i libri sono il mio Ikigai. Chissà, forse in un mondo sprovvisto di uno o l'altro non esisterei... beh, tutto sommato è andata bene!