LW IT Solutions logo LW IT Solutions logo LW IT Solutions
« Przegląd bloga /Data Privacy/Tutorials / Secure, HttpOnly, SameSite: ochrona ciasteczek i ograniczenia
Ten artykuł w innych językach:

Secure, HttpOnly, SameSite: ochrona ciasteczek i ograniczenia

Secure, HttpOnly, SameSite: ochrona ciasteczek i ograniczenia

Management Summary

Cookies to małe wartości zapisywane w przeglądarce, często podtrzymujące logowanie na stronie. Ustawienia ochrony określają, dokąd mogą być wysyłane i jaki kod strony może je odczytać. Secure wymaga chronionego połączenia, HttpOnly blokuje bezpośredni dostęp skryptów, a SameSite ogranicza użycie między witrynami. Artykuł wyjaśnia współpracę tych zabezpieczeń i znaczenie celu danego ciasteczka. Są częścią bezpieczeństwa aplikacji, a nie jego pełnym zastępstwem.

Spis treści
  1. Secure: przesyłanie przez HTTPS
  2. HttpOnly: brak dostępu przez document.cookie
  3. SameSite: kontekst zamiast szyfrowania
  4. Przykład identyfikatora sesji obsługiwanego przez serwer
  5. Co rzeczywiście wykazuje kontrola nagłówków
  6. Pytania i odpowiedzi
  7. Źródła

Secure, HttpOnly i SameSite chronią różne elementy wykorzystania ciasteczek. Właściwa kombinacja zależy od celu: identyfikator sesji, po którym serwer rozpoznaje istniejące logowanie, potrzebuje innych właściwości niż nieszkodliwe ustawienie wyglądu odczytywane przez JavaScript. Samo liczenie atrybutów nie daje więc rankingu bezpieczeństwa.

Secure: przesyłanie przez HTTPS

Secure ogranicza przesyłanie do bezpiecznych połączeń, w zwykłych witrynach do HTTPS. Przeglądarki przewidują wyjątki dla localhost. Atrybut nie dodaje osobnego szyfrowania wartości ciasteczka ani nie blokuje dostępu JavaScript.

Bez Secure pasujące ciasteczko może zostać przesłane otwartym tekstem w żądaniu HTTP. Późniejsze przekierowanie na HTTPS jest dla tego żądania spóźnione. Już obowiązujące HSTS może zmienić połączenie przed wysłaniem; nowo odebrany nagłówek HSTS nie chroni jednak wstecz pierwszego żądania HTTP. Samo HTTPS nie dodaje automatycznie Secure do ciasteczek.

HttpOnly: brak dostępu przez document.cookie

HttpOnly ukrywa ciasteczko przed zwykłymi interfejsami JavaScript do obsługi ciasteczek. Utrudnia to bezpośrednią kradzież wartości sesji przez wstrzyknięty skrypt. Przeglądarka nadal może dołączać ciasteczko do odpowiednich żądań, także zainicjowanych przez JavaScript. HttpOnly nie usuwa zatem podatności XSS (wykonywania wstrzykniętych skryptów) ani nie blokuje wszystkich działań w przejętej sesji.

HttpOnly jest zazwyczaj właściwe dla serwerowych identyfikatorów sesji. Ustawienie wyglądu celowo odczytywane przez JavaScript nie może natomiast korzystać z tego atrybutu. JavaScript nie ustawi HttpOnly przez document.cookie. Brak atrybutu wymaga więc oceny według celu ciasteczka, a nie samej częstości występowania.

SameSite: kontekst zamiast szyfrowania

Same-site nie oznacza same-origin. W przypadku zwykłych domen liczy się schemat oraz domena rejestrowalna. Na przykład https://shop.example.com i https://login.example.com są same-site, ale mają różne origins. Zmiana HTTPS na HTTP oznacza cross-site.

  • Strict: ogranicza konteksty cross-site; nawet wejście z zewnętrznego odnośnika może początkowo nastąpić bez ciasteczka.
  • Lax: dodatkowo dopuszcza wybrane nawigacje cross-site w głównym oknie przeglądarki, używające bezpiecznych metod, na przykład zwykły odnośnik GET. Osadzony zasób lub zwykły cross-site POST nie spełnia tych warunków.
  • None: usuwa ograniczenie SameSite i wymaga Secure. Pozostałe reguły ciasteczek i prywatności nadal obowiązują; dostępność ciasteczek podmiotów trzecich nie jest gwarantowana.

Niektóre przeglądarki stosują domyślne Lax przy braku atrybutu. Takie ustawienie może obejmować krótkotrwały wyjątek dla POST przy niedawno ustawionych ciasteczkach. Brak SameSite nie oznacza zatem ani nieograniczonego przesyłania, ani pełnej ochrony przed CSRF (niechcianymi żądaniami wykorzystującymi istniejące logowanie). Jawne wartości SameSite ułatwiają ocenę zasad przesyłania. Żądania zmieniające dane, na przykład aktualizacja adresu, wymagają też zabezpieczeń takich jak weryfikowane tokeny CSRF.

Secure chroni transport, HttpOnly dostęp skryptów, a SameSite kontekst żądania. Odebrany nagłówek nie dowodzi zapisu.
Secure chroni transport, HttpOnly dostęp skryptów, a SameSite kontekst żądania. Odebrany nagłówek nie dowodzi zapisu.

Przykład identyfikatora sesji obsługiwanego przez serwer

Set-Cookie: __Host-session=SERVER_GENERATED_RANDOM_VALUE; Path=/; Secure; HttpOnly; SameSite=Lax

SERVER_GENERATED_RANDOM_VALUE to symbol zastępczy bezpiecznej wartości losowej generowanej przez serwer. W obsługujących przeglądarkach prefiks __Host- wymaga Secure, Path=/ i braku atrybutu Domain. Ciasteczko pozostaje dzięki temu ograniczone do ustawiającego hosta. Lax to możliwa konfiguracja początkowa; przekierowania logowania i aplikacje osadzone wymagają osobnych testów działania.

Rząd małych pojemników z pieczęciami na wiekach; jeden stoi otwarty, jego wieko leży obok
Symboliczna ilustracja zabezpieczeń; bez rankingu ani pomiaru witryn.

Co rzeczywiście wykazuje kontrola nagłówków

Wiersz Set-Cookie jest początkowo instrukcją, a nie dowodem zapisania ciasteczka. Przeglądarka może odrzucić instrukcję; wiersz może również zastępować lub usuwać ciasteczko. Odpowiedzi z kolejnych przekierowań wymagają osobnego zapisu.

Zwykłe pobranie strony głównej pomija również ciasteczka utworzone przez JavaScript oraz odpowiedzi na późniejsze żądania skryptów, obrazów i API. Brak Set-Cookie w głównym dokumencie nie oznacza więc, że witryna nie ustawia żadnych ciasteczek. Nawet wizyta bez kliknięć może uruchomić skrypty i kolejne żądania.

Rzetelna kontrola dokumentuje świeży profil przeglądarki, wersję, adres początkowy, czas i kolejność interakcji. Odpowiedzi sieciowe oraz faktycznie zapisane ciasteczka porównuje się osobno. Każde ciasteczko wymaga opisu celu, hosta, ścieżki, czasu życia i potrzeby dostępu przez skrypt. Sam licznik atrybutów nie odpowiada na te pytania.

Pytania i odpowiedzi

Czy HttpOnly jest ważniejsze niż Secure?

Ogólna hierarchia nie jest użyteczna. Identyfikator sesji wymaga ochrony transportu oraz przed bezpośrednim odczytem przez skrypt. SameSite dodaje ograniczenia kontekstu. Żaden z tych atrybutów nie zastępuje kontroli uprawnień na serwerze ani usunięcia XSS.

Czy Path bezpiecznie oddziela aplikacje?

Path steruje wyborem ciasteczek do wysłania, ale nie jest niezawodną granicą bezpieczeństwa wobec skryptów na tym samym hoście. Osobne obszary zaufania wymagają odpowiedniego podziału hostów i aplikacji.

Czy wysoki udział atrybutów dowodzi bezpieczeństwa witryny?

Nie. Brak HttpOnly może być celowy dla nieszkodliwego ustawienia JavaScript; ciasteczko sesji ze wszystkimi atrybutami może nadal należeć do podatnej aplikacji. O ocenie decydują cel, rzeczywiste zachowanie przeglądarki i przetwarzanie na serwerze.

Lukas Wójcik

Lukas Wójcik

Systems architect and technology enthusiast specializing in scalable tracking solutions, GMP Stack (GA4 & GTM), and robust backend architectures. Advocate for clean code and privacy-first design.

Kontakt

Masz pytanie lub pomysł na projekt internetowy? Napisz krótko, o co chodzi. Formularz korzysta z reCAPTCHA do ochrony przed spamem.

Napisanie komentarza

Obserwacje z innych wdrożeń, zastrzeżenia i pytania są tu mile widziane.

Adres e-mail nie jest publikowany. Pola obowiązkowe oznaczono gwiazdką.