Dowiedz się, jak ustawić własne pliki cookie, aby zapewnić bezpieczeństwo, zgodność z różnymi przeglądarkami i zminimalizować ryzyko awarii po wycofaniu plików cookie innych firm.
Pliki cookie mogą być własne lub innych firm w zależności od kontekstu użytkownika. w zależności od tego, z jakiej witryny przegląda użytkownik w danym momencie. Jeśli domena i schemat pliku cookie, które można zarejestrować, są zgodne z bieżącą stroną najwyższego poziomu, czyli tym, co wyświetla się na pasku adresu przeglądarki, plik cookie jest uważany za pochodzący z tej samej witryny co strona i zwykle jest nazywany własnym plikiem cookie.
Pliki cookie z domen innych niż bieżąca witryna są ogólnie nazywane plikami cookie innych firm.
Dobry przepis na własne ciasteczka
Jeśli ustawiony przez Ciebie plik cookie nie jest na przykład używany w innych witrynach, jest używany do zarządzania sesjami w Twojej witrynie i nigdy nie jest używany w elemencie iframe z innej witryny, zawsze jest używany we własnej witrynie.
Domyślnie pliki cookie mogą być udostępniane między witrynami, otwierane przez JavaScript i wysyłane przez połączenia HTTP, co wiąże się z pewnymi zagrożeniami dla prywatności i bezpieczeństwa. Stale pracujemy nad ulepszaniem działania domyślnego, ale za pomocą Piaskownicy prywatności i innych ofert, np. plików cookie powiązanych z źródłem, już teraz możesz robić wiele rzeczy, ustawiając dodatkowe atrybuty w plikach cookie.
Prezentowana konfiguracja to sprawdzona metoda, która zapewnia bezpieczeństwo i zgodność z różnymi przeglądarkami w przypadku większości własnych plików cookie. Zapewni Ci to bezpieczne podstawy, które możesz dostosować, aby przyznać uprawnienia tylko w razie potrzeby. W tym artykule omawiamy również warianty przepisów stosowane w określonych przypadkach.
Przepis
Set-Cookie:
__Host-cookie-name=cookie-value;
Secure;
Path=/;
HttpOnly;
Max-Age=7776000;
SameSite=Lax;
Host
to opcjonalny prefiks, który sprawia, że niektóre atrybuty są obowiązkowe, a inne zabraniają:
- Pole
Secure
musi być obecne - Pole
Domain
należy pominąć Path
musi mieć wartość/
Po dodaniu atrybutu Host
przeglądarka może sprawdzić, czy te atrybuty są zgodne z regułami __Host
, i w razie potrzeby odrzucić plik cookie.
Secure
chroni pliki cookie przed kradzieżą w niezabezpieczonych sieciach, ponieważ zezwala na ich wysyłanie tylko przez połączenia HTTPS. Potraktuj priorytetowo, jeśli witryna nie została w pełni przeniesiona do HTTPS.
Atrybut Domain
określa, które hosty mogą otrzymać plik cookie. Pominięcie tego ustawienia ogranicza plik cookie do bieżącego hosta dokumentu z wyłączeniem subdomen: plik cookie example.com
będzie wysyłany z każdym żądaniem do example.com
, ale nie w przypadku żądań do images.example.com
. Jeśli masz różne aplikacje działające w różnych subdomenach, zmniejsza to ryzyko, że jedna zhakowana domena będzie mogła dostać się do drugiej.
Path
wskazuje ścieżkę, która musi istnieć 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. Kombinacja braku Domain
i Path=/
sprawia, że plik cookie jest możliwie najściślej powiązany ze źródłem, więc działa podobnie do innej pamięci po stronie klienta, takiej jak LocalStorage
. Nie ma wątpliwości, że example.com/a
może otrzymywać inne wartości w polu example.com/b
.
Atrybut HttpOnly
zapewnia dodatkową ochronę przed złośliwymi skryptami zewnętrznymi w Twoich witrynach przez ograniczenie dostępu do JavaScriptu. Pozwala na wysyłanie plików cookie tylko w nagłówkach żądań i uniemożliwia korzystanie z nich w JavaScript za pomocą funkcji document.cookie
.
Max-Age
ogranicza czas trwania pliku cookie, ponieważ sesje przeglądarki mogą trwać dość długo, a nieaktualne pliki cookie pozostawiają bez zmian. Jest to dobre rozwiązanie w przypadku krótkoterminowych plików cookie, takich jak sesje użytkownika, a nawet krótszych plików, takich jak tokeny przesłania formularza. Max-Age
jest zdefiniowany w sekundach, a w poprzednim przykładzie ma wartość 7776000 sekund, co daje 90 dni. To rozsądne ustawienie domyślne, które może się zmieniać w zależności od zastosowania.
SameSite=Lax
ogranicza wysyłanie plików cookie tylko w przypadku żądań z tej samej witryny. Oznacza to, że żądanie pasuje do bieżącego kontekstu przeglądania – czyli do witryny najwyższego poziomu, którą w danej chwili przegląda użytkownik, wyświetlanej na pasku lokalizacji. SameSite=Lax
to ustawienie domyślne we współczesnych przeglądarkach, ale warto je określić, by zapewnić zgodność w różnych przeglądarkach, które mogą mieć inne ustawienia domyślne. Jeśli oznaczysz plik cookie jako pochodzący tylko z tej samej witryny, ograniczasz go do własnego kontekstu i nie musisz wprowadzać w nim zmian po wycofaniu plików cookie innych firm.
Więcej informacji o różnych atrybutach plików cookie znajdziesz w dokumentacji Set-Cookie
dotyczącej MDN.
Przepis na własne pliki cookie w przypadku witryn z subdomenami
Jeśli masz witrynę z subdomenami i chcesz, aby w każdej z nich była 1 sesja, prefiks Host
może być zbyt restrykcyjny. Przykład: news.site
może mieć subdomeny dla tematów takich jak finance.news.site
czy sport.news.site
i chcesz, by w każdej z nich była jedna sesja użytkownika. W takim przypadku użyj prefiksu __Secure
zamiast __Host
i określ 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 zgłasza mniej wymagań niż Host
: wymaga tylko ustawienia pliku cookie z atrybutem Secure
.
Ograniczanie dostępu do własnych plików cookie w przypadku żądań zainicjowanych z witryn innych firm
Chociaż pliki cookie SameSite=Lax
nie są wysyłane w przypadku żądań podrzędnych z innych witryn (na przykład podczas wczytywania osadzonych obrazów lub elementów iframe w witrynie innej firmy), są one wysyłane, gdy użytkownik przechodzi do witryny źródłowej (na przykład po kliknięciu linku z innej witryny).
Możesz jeszcze bardziej ograniczyć dostęp do plików cookie i uniemożliwić ich wysyłanie wraz z żądaniami zainicjowanymi z witryn innych firm za pomocą usługi SameSite=Strict
. Jest to przydatne, gdy masz pliki cookie powiązane z funkcjami, które zawsze są opóźnione przed rozpoczęciem nawigacji (np. przez zmianę hasła lub dokonanie zakupu).
Przepis
Set-Cookie:
__Host-cookie-name=cookie-value;
Secure;
Path=/;
HttpOnly;
Max-Age=7776000;
SameSite=Strict;