Contatta l'assistenza

Rispondiamo per e-mail, di solito entro due giorni.

Per prevenire abusi, Google reCAPTCHA verifica questo invio; alcuni dati vengono trasmessi a Google. Lo script viene caricato solo quando apri questo modulo.

← Tutti gli articoli

Il file che abbiamo chiamato rotto

Nella cartella delle immagini di questo progetto c’è un file chiamato stats2.gif. Pesa 366 byte, porta la data di marzo 2018 e compare in esattamente zero righe di codice sorgente. Il 23 agosto 2026 è stato servito 2.735 volte con un 200, da 145 siti diversi — e sull’intera rotazione del registro degli accessi, da 858.

Un file a cui nessuno fa riferimento, scaricato migliaia di volte al giorno da centinaia di pagine altrui. La lettura ovvia: un vecchio inserimento che nessuno ha sostituito, che serve in silenzio un’immagine statica dove un tempo c’era un contatore. I file statici scavalcano completamente PHP. Nulla che arrivi direttamente ad Apache può contare qualcosa.

Abbiamo quindi scritto uno strumento. Legge dal registro ogni pagina che rimanda, scarica ognuna di esse con lo stesso verificatore che il sito già usa per la diagnostica degli inserimenti — con le sue protezioni contro l’SSRF, perché quegli indirizzi vengono da un registro e non da noi — e cerca se qualcosa sulla pagina conti davvero.

Tutte le 858 pagine

contano già (un inserimento funzionante accanto)501
non raggiungibili affatto288
distintivo presente, nessun numero di contatore nel sorgente69
solo il vecchio distintivo, niente che conti0

Nemmeno una. Settantacinque minuti di scaricamenti per non trovare nulla.

La misurazione che sarebbe durata un secondo

stats2.gif misura 13 per 14 pixel.

Non è un contatore né un distintivo con sopra una cifra. È la piccola icona delle statistiche — la stessa cosa che ricrea il disegno 981 nella galleria attuale, e il commento nel suo stesso sorgente descrive il predecessore con precisione: nessun conteggio visibile, solo un piccolo segno che apre le tue statistiche quando lo si preme. Non doveva mai contare. Su quelle pagine contava sempre qualcos’altro.

E il file non è nemmeno rotto. Risponde con un 200, con un Last-Modified del 2018 e un anno di durata in cache. Fa il suo lavoro.

Una chiamata a getimagesize() all’inizio avrebbe chiuso l’intera linea di indagine prima che lo strumento fosse scritto. Invece la domanda era «perché questo file viene scaricato così spesso», la risposta data per buona era «perché è un contatore rotto», e tutto il resto è seguito da un’ipotesi che nessuno ha verificato.

L’unica cosa davvero rotta

Di tutto ciò, il registro ha mostrato un unico difetto vero: un indirizzo, richiesto dieci volte al giorno, tutte con 410, in cui un intero frammento di inserimento era finito dentro l’href del collegamento. Qualcuno ha incollato il codice in un campo che effettua l’escape dell’HTML. Il suo contatore è vivo e conta — a non portare da nessuna parte è solo il suo collegamento alle sue stesse statistiche.

Lo strumento resta, senza la sua via di scrittura. La domanda era legittima, la risposta è no, ed entrambe meritano di essere conservate perché nessuno debba porla di nuovo a mano.

Pubblicità