Obrati se podršci

Odgovaramo e-poštom, obično u roku od dva dana.

Google reCAPTCHA provjerava ovu prijavu radi zaštite od zlouporabe; podaci se šalju tvrtki Google. Skripta se učitava tek kada se otvori ovaj obrazac.

← Sve objave

Brojanje bez kolačića

O sadržaju i njegovoj provjeri

U ovom članku

Brojač posjetitelja ima jedan nezgodan zadatak: mora razlikovati dva posjeta. Ako to ne može, jedna osoba koja deset puta ponovno učita stranicu izgleda kao deset ljudi, a broj na web-mjestu je izmišljen.

Uobičajeno rješenje jest kolačić. Ovo web-mjesto ga ne koristi. Evo što radi umjesto toga i zašto je trebalo uložiti trud da ta rečenica bude istinita.

Kolačić koji nitko nije tražio

Do ove godine svaki zahtjev za brojač pokretao je PHP sesiju. To je jedan redak koda, djeluje bezazleno, a značilo je da je svaki posjetitelj svakog web-mjesta s brojačem Stats4U dobivao sesijski kolačić – postavljali smo ga mi, na tuđoj stranici, bez namjere ijedne strane.

sastojciIP · UA · IDdatum · dnevna solhash16 bajtovačuva se2 danasama adresa nikada se ne zapisujekad sol nestane, nitko ne može ponoviti izračun za neki dan — pa ni mi

Sesija se nikada ni za što nije koristila. Dokaz je bilo lako pronaći čim je netko pogledao: direktorij u kojem se sesije pohranjuju sadržavao je nula datoteka. Godinama se na tuđim web-mjestima postavljao kolačić za čuvanje podataka koji nikada nisu ni zapisani ni pročitani.

Uklonjena je iz postupka brojanja. Sesija se sada pokreće samo kada netko izradi brojač ili promijeni njegove postavke – radnjom koju je namjerno poduzeo na ovom web-mjestu.

Što ju je zamijenilo

Posjetitelji se razlikuju pomoću hasha. U njega ulazi pet stvari:

  • IP adresa
  • korisnički agent
  • ID brojača
  • današnji datum
  • tajna vrijednost koja se mijenja svaki dan

Rezultat je 16 bajtova i upravo se oni pohranjuju. Čuvaju se dva dana, a zatim brišu. Sama IP adresa nikada se ni u jednom trenutku ne zapisuje.

Dva posjeta iste osobe istog dana istom brojaču daju istih 16 bajtova, pa se drugi prepoznaje kao ponovljeni posjet. Sutra ista osoba daje nešto posve drukčije jer su se promijenili i datum i tajna vrijednost. To je cijeli mehanizam.

Zašto se tajna vrijednost mijenja

Ovaj je dio lako pogrešno izvesti, a ovdje je do ove godine i bio pogrešan.

Stara je verzija koristila jednu trajnu tajnu vrijednost. I dalje je davala različite hasheve za različite ljude, što zvuči u redu. No to je značilo da svatko tko posjeduje tu tajnu vrijednost može uzeti pretpostavljenu IP adresu i ponovno izračunati njezin hash za bilo koji dan u arhivi – pretvarajući tablicu anonimnih vrijednosti od 16 bajtova natrag u zapis o tome tko je što posjetio, za cijelo razdoblje koje podaci pokrivaju.

Tajna vrijednost sada se mijenja svaki dan, a stare se brišu nakon dva dana. Nakon toga nitko više ne može ponoviti izračun. To uključuje i onoga tko vodi ovo web-mjesto, što i jest smisao: zaštita koja ovisi o dobrom ponašanju upravitelja nije zaštita, nego obećanje.

Razlučivost zaslona i pouka o brisanju stvari

Razlučivost zaslona prije se prikupljala. To je klasičan signal za prepoznavanje digitalnim otiskom i nije vrijedila svoje cijene, pa je uklonjena iz skripte koja se izvršava na stranici s ugrađenim brojačem.

To nije bilo dovoljno, a razlog vrijedi znati svakome tko izrađuje nešto za tuđa web-mjesta. Skripta se isporučuje s rokom predmemoriranja od sedam dana, pa su stare kopije ostale aktivne u preglednicima posjetitelja tjedan dana nakon promjene. Još gore, neka web-mjesta uopće se ne povezuju sa skriptom – prije mnogo godina zalijepila su njezinu kopiju u svoje stranice i ta će kopija zauvijek nastaviti raditi upravo ono što je radila na dan kad je zalijepljena.

Zato je razlučivost i dalje stizala. Rješenje je bilo da poslužitelj odbija tu vrijednost, bez obzira na to tko je šalje. Uklanjanje prikupljanja podataka na klijentu zaustavlja samo nove klijente. Uklanjanje na poslužitelju zaustavlja ga odmah.

Provjera

Same tvrdnje ne vrijede mnogo, pa evo naredbe:

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

Ako nema ispisa, kolačić nije postavljen.

Jedna napomena za kraj, ista kao i uvijek: ovo opisuje što softver radi. Zadovoljava li pravila koja vrijede u određenoj državi pitanje je za nekoga tko je kvalificiran na njega odgovoriti, a ovo nije taj odgovor.

Ažuriranje, 11. rujna 2026.: Od 27. kolovoza 2026. skripta je ponovno čitala razlučivost zaslona, širinu prozora preglednika i omjer piksela na svakom web-mjestu koje ju je ugradilo. Od 11. rujna 2026. to radi samo ondje gdje vlasnik web-mjesta tu mogućnost uključi pomoću data-screen="1". Bez tog atributa aktualna skripta ne čita nijednu od te tri vrijednosti, a poslužitelj ih više ne pohranjuje ni iz starijih kopija.

Oglas