Czas życia ciasteczka: trzy limity przeglądarek i jak sposób jego ustawienia je zmienia

Spis treści
Max-Age=63072000 żąda przechowywania przez 730 dni. Nie gwarantuje rozpoznawania przez 730 dni. Przeglądarka może skrócić termin, odrzucić ciasteczko albo usunąć zapis wcześniej. Znaczenie mają sposób ustawienia, ochrona przed śledzeniem, tryb przeglądania i atrybuty.

Trzy grupy ograniczeń
Pamięć zapisana skryptem w WebKit: ITP 2.1 wprowadził siedmiodniowy limit wygaśnięcia trwałych ciasteczek tworzonych przez document.cookie. Krótszy żądany okres pozostaje krótszy; ciasteczka sesyjne stanowią osobny przypadek. Istnieje także usuwanie ciasteczek zapisanych skryptem i innej pamięci dostępnej do zapisu przez skrypty po braku interakcji. WebKit opisuje siedem dni używania Safari bez interakcji z witryną. Termin wygaśnięcia i decyzja o usunięciu pamięci to różne mechanizmy. Ponowny zapis ciasteczka nie odpowiada kliknięciu, dotknięciu ani interakcji klawiaturą.
Ukryte odpowiedzi podmiotów trzecich: po wykryciu maskowania zewnętrznego dostawcy przez CNAME lub IP WebKit ogranicza wygaśnięcie ciasteczek z odpowiedzi do siedmiu dni. CNAME jest aliasem DNS; nie każdy alias uruchamia tę regułę. Znaczenie mają relacja do domeny własnej oraz CNAME hosta dokumentu głównego. Sam rekord A nie potwierdza wyjątku.
Ogólne limity wygaśnięcia: Chrome i Firefox ograniczają okres przy ustawianiu ciasteczka do najwyżej 400 dni. To maksimum, a nie gwarancja zachowania danych ani zalecany okres pomiaru. Chrome dokumentuje limit od wersji 104; aktualne zapisy implementacyjne Mozilli również potwierdzają ograniczenie.
Odpowiedź serwera zmienia architekturę
Przeniesienie ustawiania z JavaScriptu do odpowiedzi Set-Cookie może zmienić stosowane reguły. Nie gwarantuje rocznego rozpoznawania, nie usuwa ochrony przed śledzeniem ani ryzyka awarii punktu końcowego. Własność serwera nie jest tym samym co relacja sieciowa oceniana przez przeglądarkę. Heurystyka IP WebKit porównuje rodziny adresów i wspólne prefiksy; udokumentowane kryteria mogą się zmieniać.
Odpowiedź może ustawić HttpOnly. Skrypty strony nie mogą wtedy odczytać ani zmienić ciasteczka. Przeglądarka nadal może wysyłać ciasteczko w pasujących żądaniach HTTP, także inicjowanych przez JavaScript. Tag oczekujący bezpośredniego odczytu identyfikatora wymaga więc innej architektury. HttpOnly ogranicza bezpośrednią kradzież przez dostęp skryptowy, ale nie blokuje każdej czynności wstrzykniętego skryptu.
Atrybuty: odrzucenie to nie to samo co wysyłanie
SameSite=NonewymagaSecurew aktualnych popularnych implementacjach. Polityka przeglądarki nadal może blokować dostęp między witrynami.SameSite=Laxnie wyklucza wszystkich żądań między witrynami: nawigacja dokumentu głównego bezpieczną metodą, np. GET, może zawierać ciasteczko. Brak atrybutu może uruchamiać domyślną regułę Lax, czasem z ograniczonym wyjątkiem POST dla niedawno ustawionych ciasteczek.__Host-wymaga Secure, Path=/, braku Domain i bezpiecznego źródła w przeglądarkach obsługujących prefiks.- Szczegóły limitów rozmiaru różnią się między implementacjami. RFC 6265 zaleca obsługę co najmniej 4096 bajtów łącznie z nazwą, wartością i atrybutami. Nie jest to uniwersalny próg wyłącznie dla nazwy i wartości. Zbyt duże ciasteczka mogą być odrzucone; limit całego nagłówka żądania to osobna kwestia.
- Przy dwóch poprawnych wartościach Max-Age ma pierwszeństwo przed Expires. Expires pozostaje obsługiwanym sposobem określania wygaśnięcia. Połączenie nie oznacza odrzucenia.
Rozpoznawanie a przechowywanie historii
Po wygaśnięciu anonimowego identyfikatora powracająca przeglądarka może otrzymać nowy identyfikator, jeżeli inny dopuszczalny mechanizm tożsamości nie łączy późniejszej aktywności. Wcześniejsze zdarzenia nie znikają z tego powodu z bazy analitycznej. Klasyfikacja jako nowy użytkownik i powiązanie konwersji zależą od ustawień tożsamości, dostępnych danych i metody atrybucji.
Krótszy czas życia może rozrywać ścieżki. Nie czyni automatycznie bezsensownym każdego dłuższego okresu raportowania. Skrócenie okna atrybucji również nie odtwarza brakujących powiązań. Raport powinien opisywać obserwowany zakres danych i rozróżniać bezpośrednio połączone aktywności od wyników modelowanych lub łączonych inną metodą.
Pytania i odpowiedzi
Czy ponowny zapis wydłuża czas życia?
Udana aktualizacja może zażądać nowego terminu w granicach obowiązującego limitu. Nie gwarantuje ciągłego rozpoznawania: wcześniejsze usunięcie, krótszy żądany okres lub surowsza ochrona nadal mogą zadziałać. WebKit dokumentuje też limit 24 godzin dla ciasteczek JavaScript w wykrytych scenariuszach śledzenia przez dekorowanie linków. Odświeżenie nie tworzy ogólnego wyjątku.
Czy ustawienie przez serwer usuwa wymóg zgody?
Nie. W Niemczech § 25 TDDDG obejmuje zapis informacji na urządzeniu końcowym i dostęp do informacji, z określonymi wyjątkami. Sama odpowiedź HTTP nie tworzy wyjątku. Cel i właściwe prawo pozostają istotne. Zapis i przetwarzanie zależne od zgody muszą ustać po wycofaniu. Usunięcie ciasteczka HttpOnly wymaga odpowiedniej odpowiedzi serwera z pasującą nazwą, domeną i ścieżką oraz wygasłym terminem. Usunięciu nie może towarzyszyć automatyczne odtworzenie.
Co powinna obejmować kontrola praktyczna?
Zapis wersji przeglądarki, trybu prywatności, sposobu ustawienia i stanu zgody. Porównanie żądanych atrybutów z zapisanym ciasteczkiem, a następnie sprawdzenie wysłania przy pasującym żądaniu. Dla zapisu skryptowego nagłówek Set-Cookie może nie występować. Widoczny termin nie dowodzi ochrony przed późniejszym usunięciem po braku interakcji. Brak ciasteczka może wynikać z polityki, odrzucenia, usunięcia albo niewłaściwego kontekstu pamięci. Puste document.cookie nie dowodzi też nieobecności ciasteczka HttpOnly.
Zachowanie właściwe Safari wymaga odpowiedniego środowiska Safari/WebKit. Test w desktopowym Chrome nie weryfikuje ITP. Różnice udziału powracających użytkowników same nie dowodzą przyczyny.
Źródła
- WebKit: Intelligent Tracking Prevention 2.1
- WebKit: Full Third-Party Cookie Blocking and More
- WebKit: Tracking Prevention
- WebKit: Private Browsing 2.0
- Chrome: Cookie expiry upper limit
- Mozilla: Cookie expiry cap implementation
- MDN: Set-Cookie
- RFC 6265: HTTP State Management Mechanism
- TDDDG § 25: Schutz der Privatsphäre bei Endeinrichtungen