Kontakt z pomocą

Odpowiadamy e-mailem, zwykle w ciągu dwóch dni.

Google reCAPTCHA sprawdza to zgłoszenie pod kątem nadużyć; dane trafiają do Google. Skrypt ładuje się dopiero po otwarciu formularza.

← Wszystkie wpisy

Liczenie bez ciasteczka

Licznik odwiedzin ma jedno niewdzięczne zadanie: musi odróżnić od siebie dwie wizyty. Jeśli tego nie potrafi, jedna osoba odświeżająca stronę dziesięć razy wygląda jak dziesięć osób, a liczba na stronie jest fikcją.

Zwykłym rozwiązaniem jest ciasteczko. Ta strona go nie używa. Oto co robi zamiast tego — i dlaczego uczciwa wersja tego zdania wymagała trochę pracy, zanim można ją było wypowiedzieć.

Ciasteczko, o które nikt nie prosił

Do tego roku każde żądanie do licznika uruchamiało sesję PHP. To jedna linijka kodu, wygląda niegroźnie, ale oznaczało to, że każdy odwiedzający każdą stronę korzystającą z licznika Stats4U otrzymywał ciasteczko sesyjne — ustawiane przez nas, na cudzej stronie, bez zamiaru żadnej ze stron.

składnikiIP · UA · IDdata · sól dniaskrót16 bajtówzostaje2 dnisam adres nigdy nie jest zapisywanygdy sól zniknie, nikt nie przeliczy dnia — my też nie

Sesja nigdy nie była do niczego wykorzystywana. Dowód był łatwy do znalezienia, gdy tylko ktoś się temu przyjrzał: katalog, w którym przechowywane są sesje, zawierał zero plików. Przez lata ustawiało to ciasteczko na cudzych stronach, aby przechowywać dane, które nigdy nie zostały zapisane ani odczytane.

Zniknęło ze ścieżki liczenia. Sesja jest teraz uruchamiana wyłącznie wtedy, gdy ktoś tworzy lub zmienia konfigurację licznika — czynność podjętą świadomie, na tej stronie.

Co je zastąpiło

Odwiedzający są od siebie odróżniani za pomocą skrótu. Wchodzi do niego pięć elementów:

  • adres IP
  • user agent
  • identyfikator licznika
  • dzisiejsza data
  • sekret, który zmienia się codziennie

Na wyjściu powstaje 16 bajtów i to właśnie one są zapisywane. Są przechowywane przez dwa dni, a następnie usuwane. Sam adres IP nigdy, na żadnym etapie, nie jest zapisywany.

Dwie wizyty tej samej osoby tego samego dnia na tym samym liczniku dają te same 16 bajtów, więc druga z nich jest rozpoznawana jako powtórka. Jutro ta sama osoba wygeneruje coś zupełnie innego, ponieważ zmieniły się zarówno data, jak i sekret. To cały mechanizm.

Dlaczego sekret się zmienia

To jest ta część, w której najłatwiej się pomylić — i tutaj, aż do tego roku, była błędna.

Stara wersja używała jednego, stałego sekretu. To wciąż dawało różne skróty dla różnych osób, co brzmi w porządku. Oznaczało to jednak, że każdy, kto znał ten sekret, mógł wziąć podejrzewany adres IP i ponownie obliczyć jego skrót dla dowolnego dnia z archiwum — zamieniając tabelę anonimowych 16-bajtowych wartości z powrotem w zapis tego, kto co odwiedził, sięgający tak daleko wstecz, jak sięgały dane.

Sekret zmienia się teraz codziennie, a stare są usuwane po dwóch dniach. Gdy to nastąpi, obliczenia nie da się już wykonać, przez nikogo. Dotyczy to również tego, kto prowadzi tę stronę, i o to właśnie chodzi: zabezpieczenie, które zależy od dobrego zachowania operatora, nie jest zabezpieczeniem — jest obietnicą.

Rozdzielczość ekranu i lekcja o usuwaniu rzeczy

Rozdzielczość ekranu była kiedyś zbierana. To klasyczny sygnał wykorzystywany do fingerprintingu i nie był wart tego, ile kosztował, więc został usunięty ze skryptu działającego na cudzych stronach.

To nie wystarczyło, a powód warto znać przy budowaniu czegokolwiek dla cudzych stron internetowych. Skrypt jest serwowany z czasem życia w pamięci podręcznej wynoszącym siedem dni, więc stare kopie pozostawały aktywne w przeglądarkach odwiedzających jeszcze przez tydzień po zmianie. Co gorsza, niektóre strony w ogóle nie linkują do skryptu — wkleiły jego kopię na swoje własne strony lata temu, a ta kopia będzie robić dokładnie to, co robiła w dniu wklejenia, na zawsze.

Więc rozdzielczość wciąż napływała. Rozwiązaniem było sprawienie, by to serwer odrzucał tę wartość, niezależnie od tego, kto ją wysyła. Usunięcie zbierania danych po stronie klienta zatrzymuje tylko nowych klientów. Usunięcie go po stronie serwera zatrzymuje to natychmiast.

Do sprawdzenia samodzielnie

Żadne z tych stwierdzeń nie jest warte wiele jako deklaracja, więc oto polecenie:

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

Brak wyniku oznacza, że nie ustawiono żadnego ciasteczka.

Na koniec jedno zastrzeżenie, zawsze to samo: to opisuje, co robi oprogramowanie. Czy spełnia ono przepisy obowiązujące w danym kraju, to pytanie do kogoś uprawnionego do udzielenia na nie odpowiedzi — a to nie jest ta odpowiedź.

Aktualizacja z 11.09.2026: Od 27.08.2026 skrypt znów odczytywał rozdzielczość ekranu, szerokość okna przeglądarki i współczynnik pikseli na każdej stronie, która go osadzała. Od 11.09.2026 robi to tylko tam, gdzie właściciel strony włączy odczyt za pomocą data-screen="1". Bez tego atrybutu obecny skrypt nie odczytuje żadnej z tych trzech wartości, a serwer nie zapisuje ich już także ze starszych kopii skryptu.

Reklama