Kreiptis pagalbos

Atsakome el. paštu, dažniausiai per dvi dienas.

Google reCAPTCHA tikrina šį pateikimą, kad apsaugotų nuo piktnaudžiavimo; duomenys siunčiami Google. Scenarijus įkeliamas tik atvėrus šią formą.

← Visi įrašai

Skaičiavimas be slapuko

Apie turinį ir jo patikrą

Šiame straipsnyje

Lankytojų skaitiklis turi vieną keblią užduotį – atskirti du apsilankymus. Jei to negali, vienas žmogus, dešimt kartų iš naujo įkėlęs puslapį, atrodo kaip dešimt žmonių, o svetainėje rodomas skaičius tampa pramanu.

Įprastas sprendimas – slapukas. Ši svetainė jo nenaudoja. Štai kas daroma vietoj to ir kodėl reikėjo padirbėti, kad šis sakinys būtų teisingas.

Slapukas, kurio niekas neprašė

Iki šių metų kiekviena skaitiklio užklausa pradėdavo PHP seansą. Tai viena kodo eilutė, ji atrodo nekaltai, bet reiškė, kad kiekvienas kiekvienos svetainės, naudojančios Stats4U skaitiklį, lankytojas gaudavo seanso slapuką – jį nustatydavome mes, svetimame puslapyje, nors nė viena pusė to neketino.

sudedamosios dalysIP · UA · IDdata · kasdienė druskamaiša16 baitųlaikoma2 dienaspats adresas niekada neįrašomasišnykus druskai, niekas nebegali perskaičiuoti dienos — įskaitant mus

Seansas niekada nebuvo naudojamas jokiam tikslui. Vos pažvelgus įrodymą buvo lengva rasti: seansų saugojimo kataloge nebuvo nė vieno failo. Metų metus kitų žmonių svetainėse buvo nustatomas slapukas duomenims, kurie niekada nebuvo įrašomi ir niekada neskaitomi.

Skaičiavimo eigoje jo nebėra. Dabar seansas pradedamas tik tada, kai kas nors kuria skaitiklį arba keičia jo nuostatas – sąmoningai atlieka veiksmą šioje svetainėje.

Kas jį pakeitė

Lankytojai atskiriami pagal maišos reikšmę. Naudojami penki dalykai:

  • IP adresas
  • naršyklės identifikavimo eilutė
  • skaitiklio ID
  • šiandienos data
  • kasdien keičiama slapta reikšmė

Rezultatas – 16 baitų, kurie ir saugomi. Jie laikomi dvi dienas, tada ištrinami. Pats IP adresas niekada ir jokiu etapu neįrašomas.

Du to paties žmogaus apsilankymai tą pačią dieną prie to paties skaitiklio sukuria tuos pačius 16 baitų, todėl antrasis atpažįstamas kaip pakartotinis. Rytoj tas pats žmogus sukurs visiškai kitokią reikšmę, nes pasikeis ir data, ir slaptoji reikšmė. Tai visas mechanizmas.

Kodėl slaptoji reikšmė keičiama

Šioje vietoje lengva suklysti, ir iki šių metų čia buvo suklysta.

Senoji versija naudojo vieną nuolatinę slaptąją reikšmę. Skirtingiems žmonėms ji vis tiek generavo skirtingas maišos reikšmes, ir tai skamba gerai. Bet tai reiškė, kad kiekvienas, turintis tą slaptąją reikšmę, galėjo paimti numanomą IP adresą ir perskaičiuoti jo maišą bet kuriai archyvo dienai – taip anoniminių 16 baitų reikšmių lentelę vėl paversti įrašu, kas kur lankėsi, nuo pat ankstyviausių turimų duomenų.

Dabar slaptoji reikšmė keičiama kasdien, o senosios ištrinamos po dviejų dienų. Po to niekas nebegali pakartoti skaičiavimo. Net ir šios svetainės valdytojas – būtent to ir siekiama: apsauga, priklausanti nuo valdytojo gero elgesio, yra pažadas, o ne apsauga.

Ekrano skiriamoji geba ir pamoka apie šalinimą

Anksčiau buvo renkama ekrano skiriamoji geba. Tai klasikinis skaitmeninio atspaudo požymis, kurio nauda neatsvėrė kainos, todėl jis pašalintas iš įterpiančiame puslapyje veikiančio scenarijaus.

To nepakako, ir priežastį verta žinoti kiekvienam, kuriančiam kitų žmonių svetainėms. Scenarijus pateikiamas su septynių dienų podėlio trukme, todėl senos kopijos lankytojų naršyklėse veikė dar savaitę po pakeitimo. Dar blogiau: kai kurios svetainės apskritai neturi nuorodos į scenarijų – prieš daugelį metų jo kopiją įklijavo į savo puslapius, ir ta kopija visą laiką darys tiksliai tai, ką darė įklijavimo dieną.

Taigi skiriamoji geba ir toliau buvo siunčiama. Sprendimas buvo priversti serverį nepriimti šios reikšmės, nesvarbu, kas ją siunčia. Pašalinus duomenų rinkimą iš kliento, jis sustabdomas tik naujuose klientuose. Pašalinus iš serverio, jis sustabdomas iš karto.

Kaip patikrinti

Vien teiginiai mažai ko verti, todėl štai komanda:

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

Jei išvesties nėra, slapukas nebuvo nustatytas.

Pabaigai tas pats įspėjimas kaip visada: čia aprašoma, ką daro programinė įranga. Ar to pakanka konkrečioje šalyje taikomoms taisyklėms, turi atsakyti kompetentingas specialistas, ir šis tekstas tokio atsakymo nepateikia.

Atnaujinta 2026 m. rugsėjo 11 d.: Nuo 2026 m. rugpjūčio 27 d. scenarijus vėl skaitė ekrano skiriamąją gebą, naršyklės lango plotį ir pikselių santykį kiekvienoje jį įterpusioje svetainėje. Nuo 2026 m. rugsėjo 11 d. jis tai daro tik ten, kur svetainės savininkas įjungia šią funkciją atributu data-screen="1". Be šio atributo dabartinis scenarijus neskaito nė vieno iš šių trijų duomenų, o serveris jų nebesaugo ir iš senesnių kopijų.

Reklama