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 all'apertura di questo modulo.

← Tutti gli articoli

Contare senza un cookie

Un contatore di visite ha un compito scomodo: deve distinguere due visite l'una dall'altra. Se non ci riesce, una persona che ricarica una pagina dieci volte sembra dieci persone, e il numero sul sito è pura invenzione.

La soluzione abituale è un cookie. Questo sito non ne usa uno. Ecco cosa fa al suo posto, e perché ci è voluto un po' di lavoro per guadagnarsi la versione onesta di questa frase.

Il cookie che nessuno aveva chiesto

Fino a quest'anno, ogni richiesta al contatore avviava una sessione PHP. È una riga di codice, sembra innocua, e significava che ogni visitatore di ogni sito che usa un contatore Stats4U riceveva un cookie di sessione — impostato da noi, su pagine altrui, senza che nessuna delle due parti lo volesse.

gli ingredientiIP · UA · IDdata · sale del giornoimpronta16 bytetenuta2 giornil'indirizzo stesso non viene mai scrittosparito il sale, nessuno può ricalcolare un giorno — noi compresi

La sessione non è mai stata usata per nulla. La prova era facile da trovare, una volta che qualcuno guardava: la directory in cui vengono salvate le sessioni conteneva zero file. Per anni aveva impostato un cookie sui siti di altre persone, per contenere dati che non venivano mai scritti né mai letti.

È stato eliminato dal percorso di conteggio. Una sessione viene avviata ora solo quando qualcuno crea o riconfigura un contatore — un'azione compiuta deliberatamente, su questo sito.

Cosa lo ha sostituito

I visitatori vengono distinti tramite un hash. Vi entrano cinque elementi:

  • l'indirizzo IP
  • lo user agent
  • l'ID del contatore
  • la data odierna
  • un segreto che cambia ogni giorno

Ne escono 16 byte, che sono ciò che viene memorizzato. Vengono conservati per due giorni e poi eliminati. L'indirizzo IP in sé non viene mai scritto da nessuna parte.

Due visite della stessa persona, nello stesso giorno, allo stesso contatore, producono gli stessi 16 byte, quindi la seconda viene riconosciuta come una ripetizione. Domani la stessa persona produrrà qualcosa di completamente diverso, perché sia la data sia il segreto saranno cambiati. Questo è l'intero meccanismo.

Perché il segreto ruota

Questa è la parte facile da sbagliare, ed è stata sbagliata anche qui fino a quest'anno.

La vecchia versione usava un unico segreto permanente. Anche così si ottenevano hash diversi per persone diverse, il che sembra ragionevole. Ma significava che chiunque fosse in possesso di quel segreto poteva prendere un indirizzo IP sospetto e ricalcolarne l'hash per qualsiasi giorno dell'archivio — trasformando di nuovo una tabella di valori anonimi a 16 byte in un registro di chi avesse visitato cosa, fino a dove risalivano i dati.

Ora il segreto cambia ogni giorno, e quelli vecchi vengono eliminati dopo due giorni. Una volta che questo è avvenuto, il calcolo non può più essere eseguito, da nessuno. Compreso chi gestisce questo sito, ed è proprio questo il punto: una protezione che dipende dalla buona condotta di chi gestisce il servizio non è una protezione, è una promessa.

La risoluzione dello schermo, e una lezione su come eliminare le cose

La risoluzione dello schermo veniva raccolta in passato. È un classico segnale di fingerprinting e non valeva quello che costava, quindi è stata tolta dallo script che gira sulle pagine dei siti.

Questo non è bastato, e il motivo vale la pena conoscerlo per chi costruisce qualcosa destinato ai siti di altre persone. Lo script viene servito con una durata della cache di sette giorni, quindi le vecchie copie sono rimaste attive nei browser dei visitatori per una settimana dopo la modifica. Peggio ancora, alcuni siti non si collegano affatto allo script — anni fa ne hanno incollato una copia direttamente nelle proprie pagine, e quella copia continuerà a fare esattamente quello che faceva il giorno in cui è stata incollata, per sempre.

Così la risoluzione continuava ad arrivare. La soluzione è stata far sì che fosse il server a rifiutare il valore, chiunque lo inviasse. Rimuovere una raccolta dati dal client blocca solo i nuovi client. Rimuoverla dal server la blocca immediatamente.

Una verifica indipendente

Nulla di tutto questo vale molto come semplice affermazione, quindi ecco il comando:

  • curl -sk -D - -o /dev/null 'https://www.stats4u.net/index.php?action=pic&s4uid=1' | grep -i set-cookie

Nessun output significa che non è stato impostato alcun cookie.

Un'ultima avvertenza, sempre la stessa: questo descrive cosa fa il software. Se questo soddisfi le norme vigenti in un determinato paese è una domanda per qualcuno qualificato a risponderle, e questa non lo è.

Aggiornamento dell'11 settembre 2026: Dal 27 agosto 2026 lo script ha ripreso a leggere la risoluzione dello schermo, la larghezza della finestra del browser e il rapporto di pixel, su ogni sito che lo incorporava. Dall'11 settembre 2026 lo fa solo dove il proprietario del sito lo attiva con data-screen="1". Senza questo attributo lo script attuale non legge nessuno dei tre valori, e il server non li memorizza più nemmeno se provengono da copie più vecchie.

Pubblicità