Kontaktirajte podršku

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

Radi zaštite od zloupotrebe, Google reCAPTCHA proverava ovo slanje. Pritom se podaci prenose Googleu. Skripta se učitava tek kada otvorite ovaj formular.

← Sve objave

Brojanje bez kolačića

O sadržaju i njegovoj proveri

U ovom članku

Brojač posetilaca ima jedan nezgodan zadatak: mora da razlikuje dve posete. Ako ne može, jedna osoba koja deset puta osveži stranicu izgleda kao deset ljudi, a broj na sajtu je fikcija.

Uobičajeno rešenje je kolačić. Ovaj sajt ga ne koristi. Evo šta radi umesto toga i zašto je iskrena verzija te rečenice zahtevala određeni trud.

Kolačić koji niko nije tražio

Do ove godine je svaki zahtev ka brojaču pokretao PHP sesiju. To je jedan red koda, izgleda bezazleno, i značilo je da je svaki posetilac svakog sajta koji koristi brojač Stats4U dobijao kolačić sesije – koji smo postavljali mi, na tuđoj stranici, a da to nije nameravao nijedan od nas dvoje.

sastojciIP · UA · IDdatum · dnevna soheš16 bajtovačuva se2 danasama adresa se nikada ne zapisujekada nestane soli, niko ne može ponovo da izračuna jedan dan — ni mi

Sesija nikada nije korišćena ni za šta. Dokaz je bilo lako naći čim je neko pogledao: direktorijum u kom se sesije čuvaju sadržao je nula datoteka. Godinama je postavljala kolačić na tuđim sajtovima da bi čuvala podatke koji nikada nisu zapisani niti pročitani.

Nje više nema u putanji brojanja. Sesija se sada pokreće samo kada neko napravi ili podesi brojač – radnja koju je namerno preduzeo, na ovom sajtu.

Šta ju je zamenilo

Posetioci se razlikuju po hešu. Ulazi pet stvari:

  • IP adresa
  • korisnički agent
  • ID brojača
  • današnji datum
  • tajna koja se menja svakog dana

Izlazi 16 bajtova, a to je ono što se čuva. Čuva se dva dana, a zatim briše. Sama IP adresa se ni u jednom trenutku ne zapisuje.

Dve posete iste osobe istog dana istom brojaču daju istih 16 bajtova, pa se druga prepoznaje kao ponovljena. Sutra ista osoba daje nešto potpuno drugačije, jer su se i datum i tajna promenili. To je ceo mehanizam.

Zašto se tajna menja

Ovo je deo u kom je lako pogrešiti, a ovde je bio pogrešan do ove godine.

Stara verzija je koristila jednu trajnu tajnu. Ona je i dalje davala različite heševe za različite ljude, što zvuči u redu. Ali je značilo da je svako ko poseduje tu tajnu mogao da uzme sumnjivu IP adresu i ponovo izračuna njen heš za bilo koji dan u arhivi – i tako tabelu anonimnih vrednosti od 16 bajtova pretvori nazad u zapis ko je šta posetio, onoliko unazad koliko su podaci sezali.

Tajna se sada menja svakodnevno, a stare se brišu nakon dva dana. Kada se to dogodi, izračunavanje više ne može da se pokrene, ni od strane bilo koga. To uključuje i onoga ko vodi ovaj sajt, u čemu je poenta: zaštita koja zavisi od dobrog ponašanja operatera nije zaštita, nego obećanje.

Rezolucija ekrana i pouka o brisanju

Rezolucija ekrana se ranije prikupljala. To je klasičan signal za otiske pregledača (fingerprinting) i nije vredela svoje cene, pa je uklonjena iz skripta koji se izvršava na stranici koja ga ugrađuje.

To nije bilo dovoljno, a razlog vredi znati svakome ko pravi stvari za tuđe sajtove. Skript se isporučuje sa vekom keša od sedam dana, pa su stare kopije ostale aktivne u pregledačima posetilaca nedelju dana posle izmene. Još gore, neki sajtovi uopšte ne povezuju skript – pre mnogo godina su nalepili njegovu kopiju u sopstvene stranice, a ta kopija će zauvek raditi tačno ono što je radila onog dana kad je nalepljena.

Tako je rezolucija nastavila da stiže. Rešenje je bilo da server odbije vrednost, bez obzira na to ko je šalje. Uklanjanje prikupljanja podataka sa klijenta zaustavlja samo nove klijente. Uklanjanje sa servera zaustavlja ga odmah.

Provera

Ništa od ovoga ne vredi mnogo kao tvrdnja, pa evo komande:

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

Bez izlaza znači da kolačić nije postavljen.

Jedno završno upozorenje, isto kao uvek: ovo opisuje šta softver radi. Da li zadovoljava pravila koja važe u određenoj zemlji pitanje je za nekoga ko je kvalifikovan da na njega odgovori, a ovo nije taj odgovor.

Ažuriranje, 11. septembra 2026: Od 27. avgusta 2026. skript je ponovo čitao rezoluciju ekrana, širinu prozora pregledača i odnos piksela, na svakom sajtu koji ga je ugrađivao. Od 11. septembra 2026. to radi samo tamo gde vlasnik sajta to uključi pomoću data-screen="1". Bez tog atributa aktuelni skript ne čita nijedno od ta tri, a server ih više ne čuva ni iz starijih kopija.

Oglas