Atrybuty plików cookie

Gdy serwer WWW odpowiada na żądanie zasobu, może dołączyć do odpowiedzi nagłówek Set-Cookie. Ten nagłówek informuje przeglądarkę, że ma zapisać plik cookie. Na przykład: Set-Cookie:cat=tabby. W artykule Co to są pliki cookie? znajdziesz wyjaśnienie, jak działają pliki cookie.

Oprócz podania nazwy i wartości pliku cookie Set-Cookie może zawierać atrybuty, które określają, czy pliki cookie są ustawiane i kiedy wygasają. Atrybuty pliku cookie są rozdzielone średnikami. Na przykład:

    Set-Cookie:cat=tabby; Secure; HTTPOnly; Expires=Tue, 31 Dec 2999 23:59:59 GMT;

W tym dokumencie wyjaśniamy najważniejsze atrybuty plików cookie:

Korzystanie z plików cookie HTTP zawiera bardziej szczegółowe wyjaśnienie atrybutów plików cookie.

Bezpieczeństwo

Jeśli nagłówek Set-Cookie zawiera Secure, plik cookie będzie dołączany tylko do zaszyfrowanych żądań, które korzystają z protokołu HTTPS. Nie będzie on dołączany do żądań HTTP. Może to pomóc w zapobieganiu atakom pośrednim, w których osoba przeprowadzająca atak potajemnie ingeruje w komunikację między przeglądarką a serwerem, aby przekazywać informacje i potencjalnie je zmieniać.

HTTPOnly

Jeśli nagłówek Set-Cookie zawiera HTTPOnly, JavaScript nie może uzyskać dostępu do pliku cookie, np. za pomocą document.cookie. Pomaga to chronić przed niektórymi rodzajami ataków skierowanych na pliki cookie.

SameSite

Żądanie zasobu z witryny innej niż ta, którą odwiedzasz, to żądanie pochodzące z innej witryny. Plik cookie ustawiony w odpowiedzi na żądanie z innej witryny to plik cookie innej firmy.

Atrybut SameSite decyduje o tym, czy plik cookie innej firmy zostanie uwzględniony w żądaniu. Może przyjmować 3 wartości: Strict, Lax lub None.

Więcej informacji znajdziesz w artykule Co to są pliki cookie innych firm?

Tryb rygorystyczny

Plik cookie będzie wysyłany tylko w odpowiedzi na żądania ze strony, która znajduje się w witrynie pochodzenia pliku cookie. Załóżmy na przykład, że użytkownik odwiedza stronę cats.example i ma ustawiony plik cookie z atrybutem SameSite=Strict. Później użytkownik odwiedza inną witrynę i klika link do strony w cats.example. Ustawiony plik cookie nie zostanie uwzględniony w tym żądaniu.

Lax

Działa to tak samo jak Strict, z tym że przeglądarka będzie też uwzględniać plik cookie, gdy użytkownik kliknie link do witryny, z której pochodzi plik cookie. (W poprzednim przykładzie Strict plik cookie zostałby uwzględniony, gdy użytkownik kliknie link do cats.example). Lax to wartość domyślna, jeśli w nagłówku Set-Cookie nie ma atrybutu SameSite.

Brak

Brak ograniczeń: plik cookie będzie dołączany do żądania niezależnie od tego, czy jest ono wysyłane do innej witryny. W przypadku SameSite=None plik cookie musi też mieć atrybut Secure.

Podzielona na partycje

Ten atrybut umożliwia włączenie plików cookie w partycjonowanej pamięci z osobnym „słoikiem na pliki cookie” dla każdej witryny najwyższego poziomu. Plik cookie jest podwójnie kluczowany przez witrynę najwyższego poziomu i domenę, która go ustawia.

Załóżmy na przykład, że witryna A i witryna B zawierają element iframe z witryny C. Plik cookie z partycją ustawiony przez element iframe w witrynie A nie jest dostępny dla elementu iframe w witrynie B: plik cookie AC jest oddzielony od pliku cookie BC.

Diagram pokazujący, że dwie różne witryny, które umieszczają wspólny element innej firmy, nie będą już udostępniać plików cookie tej firmy.
Dzięki partycjonowaniu plików cookie usługa innej firmy, która ustawia plik cookie po umieszczeniu w jednej witrynie najwyższego poziomu, nie może uzyskać dostępu do tego samego pliku cookie, gdy jest umieszczona w innych witrynach najwyższego poziomu.

Pliki cookie z atrybutem Partitioned są nazywane CHIPS (Cookies Having Independent Partitioned State).

Oddzielone pliki cookie muszą mieć atrybut Secure.

Więcej informacji: Cookies Having Independent Partitioned State (Pliki cookie z niezależnym stanem partycjonowanym).

Wygasa i Max-Age

Możesz określić Expires datę i godzinę lub Max-Age w sekundach, po których plik cookie ma zostać usunięty i nie będzie już wysyłany. Na przykład:

  • Set-Cookie:cat=tabby; Expires=Tue, 31 Dec 2999 23:59:59 GMT;
  • Set-Cookie:cat=tabby; Max-Age=86400

Jeśli nie określisz atrybutu Max-Age ani Expires, plik cookie zostanie usunięty po zakończeniu bieżącej sesji. Ten rodzaj pliku cookie jest czasami nazywany plikiem cookie sesji.

Domena

Jeśli nagłówek Set-Cookie ma atrybut Domain, plik cookie będzie dołączany do żądań wysyłanych do określonej domeny i jej subdomen.

Jeśli nagłówek Set-Cookie nie ma atrybutu Domain, plik cookie nie będzie dołączany do żądań wysyłanych do subdomen.

Innymi słowy, uwzględnienie atrybutu Domain ogranicza ograniczenia domeny.

Na przykład w przypadku odpowiedzi z witryny cats.example:

  • Set-Cookie:cat=tabby
    Plik cookie będzie dołączany tylko do żądań wysyłanych do cats.example
  • Set-Cookie:cat=tabby; Domain=cats.example
    Plik cookie będzie dołączany do żądań wysyłanych do cats.example, a także do żądań zasobów w subdomenach, takich jak fluffy.cats.example czy user.assets.cats.example.

Ścieżka

Jeśli atrybut Path jest uwzględniony w nagłówku odpowiedzi Set-Cookie, ustawiony plik cookie będzie uwzględniany tylko w żądaniach wysyłanych do adresów URL (w witrynie, która ustawiła plik cookie!) zgodnych z wartością Path.

Na przykład:

  • Set-Cookie:cat=tabby; Path=/articles
    Plik cookie zostanie uwzględniony w przypadku żądania dowolnej ścieżki adresu URL, która zaczyna się od /articles:
    https://cats.example/articles/tabby/index.html
    https://cats.example/articles/breeds/tabby/index.html
    https://cats.example/images/tabby.jpg
    https://cats.example/en/articles/tabby/index.html
  • Set-Cookie:cat=tabby; Path=/
    Wszystkie żądania wysyłane do dowolnego adresu URL w witrynie będą zawierać ten plik cookie.

Jeśli nagłówek odpowiedzi Set-Cookie nie ma wartości Path, plik cookie będzie dołączany tylko do żądań w tym samym katalogu. Załóżmy na przykład, że w odpowiedzi na żądanie cats.example/images/tabby.jpg. ustawiany jest plik cookie cat=tabby. Jeśli nie ustawiono Path, plik cookie będzie uwzględniany tylko w żądaniach plików w katalogu cats.example/images.

Przykłady

Narzędzia

Więcej informacji