Avendo già fatto un breve accenno con la discussione HTTP 414: problemi e opportunità, memoria PHP, vediamo ora una questione molto interessante ovvero: come le richieste PHP possono mandare in crisi un server, ovvero:
- errore (generico) HTTP 500: Internal Server Error
- errore HTTP 508: Resource Limit is Reached, 508: Loop Detected
Premessa: quanto segue viene fornito a scopo didattico e di ricerca, test effettuati su un piccolo hosting di proprietà. Inutile precisare che sfruttare la cosa per un "attacco a terzi" non è lecito.
A differenza di un classico attacco DDoS, in cui fondamentalmente secondo il principio <<l'unione fa la forza>> ovvero Botnet, in questo caso NON si va a colpire l'ampiezza di banda ma altri fattori limitanti, fra cui appunto:
- limite memoria PHP del server (ad esempio impostato a 256 MB)
- numero massimo di processi attivi in un server (anche volutamente limitato es. nel caso di un hosting condiviso, affinché un singolo sito web non possa consumare tutte le risorse a danno degli altri)
Trattandosi in ogni caso di un limite delle risorse, il server momentaneamente NON può soddisfare le richieste per nessuno, si tratta infatti sempre di errori del tipo 5xx.
Come può essere generato (intenzionalmente) un errore 5xx?
Fattori amplificativi: anziché wb.open(URL)
oppure wget URL
, con URL generico (homepage), ha MOLTO più effetto una query che esegua una ricerca (complessa, due o più termini) nel database! Questa operazione può richiedere molta memoria PHP, a seconda dei risultati mostrati, che vengono quindi attivati.
Come questo impatta la SEO? A parte il sito web non accessibile temporaneamente (per qualunque ragione sia), quando sono riscontrati problemi lato server (5xx), si osserva questo:
- qualunque tentativo di accesso diretto al sito, NON viene registrato
- il tentativo di traffico organico viene registrato e considerato negativamente da Google (o altro motore di ricerca che sia); ciò costituisce una pessima esperienza utente, core web vitals e Google posiziona in siti web anche in base a tali parametri! Infatti, a seconda dei casi:
- sito web completamente saturato di risorse, errore 5xx: l'utente che tramite ricerca Google clicca sul risultato di quel sito web, riscontra errore 5xx ovvero la pagina non viene proprio caricata; Google (o altro motore di ricerca) rileva quindi che la richiesta dell'utente non è stata soddisfatta dal sito web
- sito web parzialmente saturato di risorse: dato che la velocità di caricamento (es. LCP) è un importante fattore di ranking, dato che questo impatta molto sull'esperienza utente, se Google (o altro motore di ricerca) rileva che la pagina web si è caricata in 30-40 secondi piuttosto che in 2-3 secondi, i dati sul traffico raccolti da Google contribuiscono poi a creare una nuova valutazione molto negativa e, presumibilmente, una perdita di posizioni nei risultati di ricerca
Considerazioni aggiuntive: ad esempio, automatizzare una richiesta di traffico organico (ad esempio durante questa fase di generazione di errori 5xx, secondo quanto detto sopra). Si cerca la query su Google e, senza aprire il sito web in questione, si seleziona "copia indirizzo link" direttamente dai risultati di ricerca. Incollando in modo diretto questo collegamento, il traffico risultante appare come traffico organico, di fatto lo è. Questo, se fatto su larga scala, impatta anche sulla CTR Manipulation (SEO Black Hat).
Spero che questa guida sia sufficientemente utile ed esaustiva. Infine una vignetta divertente, che rende l'idea 😀