Atrybuty plików cookie

Gdy serwer WWW odpowiada na żądanie zasobu, może w odpowiedzi umieścić nagłówek Set-Cookie. Ten nagłówek informuje przeglądarkę, aby zapisała plik cookie. Na przykład: Set-Cookie:cat=tabby. W artykule Co to są pliki cookie znajdziesz informacje o ich działaniu.

Oprócz 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 plików cookie są rozdzielane średnikami. Na przykład:

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

W tym artykule opisujemy najważniejsze atrybuty plików cookie:

W artykule Używanie plików cookie HTTP znajdziesz bardziej szczegółowe informacje na temat atrybutów plików cookie.

Bezpieczne

👉 Domyślnie w przypadku wszystkich plików cookie należy uwzględnić Secure.

Jeśli nagłówek Set-Cookie zawiera Secure, plik cookie zostanie uwzględniony tylko w zaszyfrowanych żądaniach, które korzystają z protokołu HTTPS. Nie będzie on uwzględniany w żądaniach HTTP. Pomaga to zapobiegać atakom pośrednim, w których osoba przeprowadzająca atak potajemnie wtrąca się w komunikację między przeglądarką a serwerem, aby przekazać informacje i potencjalnie je zmodyfikować.

HTTPOnly

👉 Domyślnie w przypadku wszystkich plików cookie należy uwzględnić HTTPOnly. Pomiń tylko wtedy, gdy potrzebujesz dostępu do JavaScript.

Jeśli nagłówek Set-Cookie zawiera HTTPOnly, nie można uzyskać dostępu do pliku cookie za pomocą document.cookie. Pomaga to chronić przed pewnymi typami ataków, które dotyczą plików cookie.

SameSite

👉 SameSite=Lax to wartość domyślna, jeśli nie zostanie ustawiona żadna inna wartość. SameSite=None zezwala na pliki cookie w wielu witrynach, ale oznacza to, że pliki cookie będą blokowane, gdy obowiązują ograniczenia dotyczące plików cookie innych firm.

Żądanie zasobu z witryny innej niż ta, którą przeglądasz, to żądanie międzywitrynowe. Plik cookie ustawiony w odpowiedzi na żądanie dotyczące wielu witryn jest nazywany plikiem cookie strony trzeciej. Dowiedz się więcej: Co to są pliki cookie innych firm?

Atrybut SameSite określa, czy żądanie będzie zawierać plik cookie zewnętrznego źródła. Ma 3 możliwe wartości: Strict, LaxNone.

Tryb rygorystyczny

Plik cookie będzie wysyłany tylko w odpowiedzi na żądania z witryny, która jest witryną docelową pliku cookie. Załóżmy na przykład, że użytkownik odwiedza witrynę cats.example i ma ustawiony plik cookie z atrybutem SameSite=Strict. Później użytkownik znajduje się w innej witrynie i klika link do strony w witrynie cats.example. Ustawione wcześniej pliki cookie nie zostaną uwzględnione w tym żądaniu.

Lax

Działa to tak samo jak w przypadku zasady Strict, z tym że przeglądarka będzie też zawierać plik cookie, gdy użytkownik kliknie link do witryny źródłowej pliku cookie. (w poprzednim przykładzie Strict plik cookie zostałby uwzględniony, gdy użytkownik kliknie link do cats.example). Jeśli w nagłówku Set-Cookie nie ma atrybutu SameSite, domyślnie jest używany parametr Lax.

Brak

Bez ograniczeń: plik cookie będzie dołączany do żądania niezależnie od tego, czy jest to żądanie międzywitrynowe. W przypadku atrybutu SameSite=None plik cookie musi też mieć atrybut Secure.

Dowiedz się więcej: Objaśnienie plików cookie SameSite.

Podzielona na partycje

👉 Jeśli tworzysz plik cookie zewnętrznego, domyślnie powinieneś uwzględnić atrybut Partitioned, chyba że wiesz, że musi być udostępniany w ramach wielu wbudowanych treści.

Ten atrybut umożliwia dodanie pliku cookie do partycjonowanego magazynu z osobnym „kontenerem na pliki cookie” dla każdej witryny najwyższego poziomu. Plik cookie ma podwójny klucz: klucz domeny najwyższego poziomu oraz domeny, w której został ustawiony.

Załóżmy na przykład, że witryna A i witryna B zawierają ramkę iframe z witryny C. Tag iframe w witrynie B nie ma dostępu do oddzielonego pliku cookie ustawionego przez tag iframe w witrynie A: plik cookie AC jest oddzielony od pliku cookie BC.

Schemat pokazujący, że 2 różne witryny zawierające element pochodzący od wspólnego podmiotu zewnętrznego nie będą już udostępniać plików cookie tego podmiotu.
W przypadku podziału plików cookie usługa innej firmy, która ustawia plik cookie, gdy jest umieszczona w jednej witrynie najwyższego poziomu, nie może uzyskać dostępu do tego samego pliku cookie, gdy usługa jest umieszczona w innych witrynach najwyższego poziomu.

Pliki cookie z atrybutem Partitioned to pliki cookie o niezależnym stanie partycji (ang. Cookies Having Independent Partitioned State, CHIPS).

Oddzielone pliki cookie muszą mieć atrybut Secure.

Dowiedz się więcej: Pliki cookie z niezależnym stanem partycji.

Expires i Max-Age

👉 Pomiń atrybuty Max-AgeExpires, chyba że chcesz, aby plik cookie był aktywny dłużej niż trwająca sesja. Przeglądarki wygaszają pliki cookie, więc nie ma sensu ustawianie daty wygaśnięcia na kilka lat w przyszłości. Zamiast tego rozważ odświeżanie plików cookie, gdy użytkownik ponownie odwiedza Twoją witrynę.

Możesz określić datę i godzinę Expires lub czas Max-Age w sekundach, po którym plik cookie powinien zostać usunięty i nie powinien być 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. Taki plik cookie jest czasami nazywany plikiem cookie sesji.

Domena

👉 Jeśli nie musisz dołączać pliku cookie do żądań wysyłanych do subdomen, nie dołącz atrybutu Domain.

Jeśli nagłówek Set-Cookie zawiera atrybut Domain, plik cookie zostanie dołączony do żądań wysyłanych do określonej domeny i do wszystkich jej subdomen.

Jeśli nagłówek Set-Cookie nie zawiera atrybutu Domain, plik cookie nie będzie uwzględniany w żądaniach do poddomen.

Innymi słowy, dodanie atrybutu Domain zmniejsza ograniczenia dotyczące domen.

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

  • Set-Cookie:cat=tabby
    Plik cookie będzie uwzględniany tylko w przypadku żą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

👉 Uwzględnij Path=/ z plikiem cookie, jeśli chcesz, aby wszystkie żądania dotyczące dowolnej ścieżki na Twojej stronie zawierały plik cookie. Nie polegaj na Path w kwestii bezpieczeństwa.

Jeśli atrybut Path jest uwzględniony w nagłówku odpowiedzi Set-Cookie, ustawiona w nim cookie zostanie uwzględniona tylko w żądaniach do adresów URL (w witrynie, w której została ustawiona), które pasują do wartości Path.

Na przykład:

  • Set-Cookie:cat=tabby; Path=/articles
    Plik cookie zostanie dołączony do żądania ś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 dotyczące dowolnego adresu URL w witrynie będą zawierać plik cookie.

Jeśli nagłówek odpowiedzi Set-Cookie nie zawiera wartości Path, plik cookie zostanie uwzględniony tylko w żądaniach do tego samego katalogu. Wyobraź sobie na przykład, że plik cookie cat=tabby jest ustawiany w odpowiedzi na żądanie cats.example/images/tabby.jpg.. Jeśli nie ustawisz wartości Path, plik cookie będzie uwzględniany tylko w żądaniach plików w katalogu cats.example/images.

Prezentacje

Narzędzia

Więcej informacji