Dowiedz się, jak skonfigurować własne pliki cookie, aby zapewnić bezpieczeństwo, zgodność z różnymi przeglądarkami i zminimalizować ryzyko problemów po wycofaniu plików cookie innych firm.
Pliki cookie mogą być własne lub innych firm w zależności od kontekstu użytkownika, czyli od tego, w której witrynie się znajduje. Jeśli domena i schemat pliku cookie mieszczą się w ramach domeny najwyższego poziomu, czyli są zgodne z tym, co wyświetla się na pasku adresu przeglądarki, plik cookie jest uznawany za pochodzący z tej samej witryny co strona i jest zwykle nazywany własnym plikiem cookie.
Pliki cookie z innych domen niż bieżąca witryna są zwykle nazywane plikami cookie innych firm.
.Recepta na dobre własne pliki cookie
Jeśli plik cookie, który konfigurujesz, nie jest używany w różnych witrynach, np. służy do zarządzania sesjami w Twojej witrynie i nigdy nie jest używany w ramkach iframe w innych witrynach, jest on zawsze używany w kontekście własnej witryny.
Domyślnie pliki cookie mogą być udostępniane w różnych witrynach, dostępne przez JavaScript i wysyłane przez połączenia HTTP, co wiąże się z pewnymi zagrożeniami dla prywatności i bezpieczeństwa. Cały czas pracujemy nad ulepszaniem domyślnego zachowania, ale dzięki Piaskownicy prywatności i innym propozycjom, takim jak pliki cookie związane z domeną, możesz już teraz robić wiele rzeczy, ustawiając dodatkowe atrybuty plików cookie.
Poniższa konfiguracja jest sprawdzoną metodą, która zapewnia bezpieczeństwo i kompatybilność z różnymi przeglądarkami w przypadku większości plików cookie pochodzących od właściciela. Zapewni to bezpieczną podstawę, którą możesz dostosować, aby przyznać uprawnienia tylko wtedy, gdy jest to konieczne. W tym artykule omawiamy też warianty przepisów w przypadku niektórych konkretnych zastosowań.
Przepis
Set-Cookie:
__Host-cookie-name=cookie-value;
Secure;
Path=/;
HttpOnly;
Max-Age=7776000;
SameSite=Lax;
Host
jest opcjonalnym prefiksem, który powoduje, że niektóre atrybuty stają się obowiązkowe, a inne są niedozwolone:
- Pole
Secure
jest wymagane Domain
musi zostać pominięty- Wartość
Path
musi być równa/
Po dodaniu atrybutu Host
przeglądarka może sprawdzić, czy te atrybuty są ustawione zgodnie z regułami __Host
, i jeśli nie, odrzucić plik cookie.
Secure
chroni pliki cookie przed kradzieżą w niebezpiecznych sieciach, ponieważ zezwala na wysyłanie plików cookie tylko przez połączenia HTTPS. Jeśli nie masz jeszcze przeniesionej witryny do protokołu HTTPS, zrób to jak najszybciej.
Atrybut Domain
określa, które hosty mogą otrzymywać pliki cookie. Pominięcie go powoduje ograniczenie pliku cookie do bieżącego hosta dokumentu, z wyłączeniem subdomen: plik cookie example.com
zostanie wysłany przy każdym żądaniu do example.com
, ale nie przy żądaniach do images.example.com
. Jeśli masz różne aplikacje działające w różnych subdomenach, zmniejsza to ryzyko, że jedna zhakowana domena umożliwi dostęp do innych.
Path
wskazuje ścieżkę, która musi występować w żądanym adresie URL, aby przeglądarka mogła wysłać nagłówek Cookie
. Ustawienie Path=/
oznacza, że plik cookie jest wysyłany do wszystkich ścieżek adresów URL w tej domenie. Połączenie opcji bez Domain
i Path=/
sprawia, że plik cookie jest jak najbardziej powiązany z pochodzącym z niego źródłem, więc zachowuje się podobnie do innych lokalnych pamięci, takich jak LocalStorage
. Nie ma więc ryzyka, że example.com/a
otrzyma inne wartości niż example.com/b
.
Atrybut HttpOnly
zapewnia pewną ochronę przed złośliwymi skryptami innych firm w Twoich witrynach, ponieważ ogranicza dostęp do JavaScriptu. Umożliwia wysyłanie pliku cookie tylko w nagłówkach żądań i czyni je niedostępnymi dla JavaScriptu za pomocą document.cookie
.
Max-Age
ogranicza czas życia pliku cookie, ponieważ sesje przeglądarki mogą trwać dość długo, a nie chcesz, aby nieaktualne pliki cookie krążyły w nieskończoność. Jest to dobre rozwiązanie w przypadku plików cookie o krótkim czasie ważności, takich jak sesje użytkowników, a także krótszych, np. tokenów do przesyłania formularzy. Wartość Max-Age
jest podawana w sekundach. W poprzednim przykładzie wynosi 7776000 sekund, czyli 90 dni. To jest rozsądna wartość domyślna, którą możesz zmienić w zależności od potrzeb.
SameSite=Lax
ogranicza plik cookie do wysyłania tylko w przypadku żądań z tej samej witryny. Oznacza to, że żądanie pasuje do bieżącego kontekstu przeglądania, czyli witryny najwyższego poziomu, którą użytkownik obecnie odwiedza i która jest wyświetlana na pasku adresu. SameSite=Lax
jest domyślną wartością w nowoczesnych przeglądarkach, ale warto ją określić, aby zapewnić zgodność z różnymi przeglądarkami, które mogą mieć inne wartości domyślne. Jeśli wyraźnie oznaczysz plik cookie jako „tylko w ramach tej samej witryny”, ograniczysz jego działanie do kontekstów własnych. Nie będziesz musiał wprowadzać zmian w tym pliku cookie, gdy pliki cookie innych firm zostaną usunięte.
Więcej informacji o różnych atrybutach plików cookie znajdziesz w dokumentacji Set-Cookie
w MDN.
Receptura własnego pliku cookie w przypadku witryn z subdomenami
Jeśli masz witrynę z subdomenami i chcesz, aby jedna sesja obejmowała wszystkie z nich, prefiks Host
może być zbyt restrykcyjny. Na przykład news.site
może mieć subdomeny dla tematów, takich jak finance.news.site
i sport.news.site
, a Ty chcesz, aby wszystkie były dostępne w ramach jednej sesji użytkownika. W takim przypadku zamiast __Host
użyj przedrostka __Secure
i podaj wartość Domain
.
Przepis
Set-Cookie:
__Secure-cookie-name=cookie-value;
Secure;
Domain=news.site;
Path=/;
HttpOnly;
Max-Age=7776000;
SameSite=Lax;
Secure
to opcjonalny prefiks, który ma mniej wymagań niż Host
: wymaga tylko ustawienia pliku cookie za pomocą atrybutu Secure
.
Ograniczanie dostępu do własnych plików cookie w przypadku żądań wysyłanych z witryn innych firm
Pliki cookie SameSite=Lax
nie są wysyłane w ramach subżądań między witrynami (np. podczas wczytywania osadzonych obrazów lub ramek iframe w witrynie innej firmy), ale są wysyłane, gdy użytkownik przechodzi do witryny źródłowej (np. gdy klika link w innej witrynie).
Możesz dodatkowo ograniczyć dostęp do plików cookie i zablokować ich wysyłanie wraz z żądaniami rozpoczętymi z witryn innych firm za pomocą SameSite=Strict
. Jest to przydatne, gdy masz pliki cookie związane z funkcjami, które zawsze będą dostępne po początkowej nawigacji, np. zmiana hasła lub dokonanie zakupu.
Przepis
Set-Cookie:
__Host-cookie-name=cookie-value;
Secure;
Path=/;
HttpOnly;
Max-Age=7776000;
SameSite=Strict;