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 własnych plików cookie. 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ę wymagane, a inne są zabronione:
- 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 HTTPS, zrób to w pierwszej kolejności.
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ń w ramach tej samej witryny. Oznacza to, że żądanie pasuje do bieżącego kontekstu przeglądania, czyli witryny najwyższego poziomu, którą użytkownik w danym momencie odwiedza i która wyświetla się 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ń w wielu witrynach (np. podczas wczytywania osadzonych obrazów lub elementów 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 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;