Cookies nejsou nic tajemného, je to proměnná s textovou hodnotou, kterou lze uložit v prohlížeči. Cookies se do počítače dostanou dvěma způsoby:
- jako součást odpovědi webového serveru (http cookies):
HTTP/2.0 200 OK
Content-Type: text/html
Set-Cookie: zakopany=pes
<html>….
- zadruhé pomocí kódu jazyka JavaScript na stránce (Javascript cookies): document.cookie = „byljsemtu=fantomas”;
Oba způsoby vedou k tomu, že prohlížeč uloží cookie pro tento webový server (dle názvu serveru, tj. domény). Pomocí vývojářských nástrojů si je můžeme prohlédnout přímo v prohlížeči:
Co je důležité, že při každém dalším požadavku (nová návštěva stránky nebo třeba jen zobrazení obrázku na stránce) na tento webový server prohlížeč přiloží cookies, která má pro danou doménu uložena. Tímto způsobem se mohou data uložena na vašem počítači dostat na servery.
Samozřejmě cookies nejsou jediná cesta jak dostat data na server – můžete je prostě poslat http požadavkem na server přímo, příkazem z JavaScriptu. Tímto způsobem pracují events a beacons v různých měřicích systémech. Rozdíl s cookies spočívá v tom, že je aktivně posílá přímo prohlížeč s každým požadavkem. Takto vypadá odchozí http požadavek z prohlížeče, který obsahuje i cookies pro danou doménu uložené v počítači:
GET /html/adform_sync.html HTTP/2
Host: h.seznam.cz
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0
Accept: text/html
Accept-Language: cs,sk;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Referer: https://www.idnes.cz/
Cookie: byljsemtu=fantomas; zakopany=pes
Cookies 1 versus 3 stran
First-party cookies (cookies první strany)
Jsou to cookies, které jsou vytvořeny a uloženy prohlížečem při přímé interakci s konkrétní webovou stránkou. To znamená, že když uživatel navštíví webovou stránku (moje-domena.cz), která vytváří a poskytuje cookies, jsou tyto cookies označeny jako „first-party“, protože jsou přímo spojeny s touto stránkou.
Third-party cookies (cookies třetích stran)
Jsou to cookies, které jsou vytvořeny a uloženy prohlížečem, když se na webové stránce načítá obsah z externího zdroje, tj. z jiné domény než doména hlavní webové stránky (jina-domena.cz). Pokud například webová stránka obsahuje reklamu, sociální média nebo analytické skripty poskytované třetí stranou, cookies vytvořené těmito skripty jsou označeny jako „third-party“, protože jsou spojeny s doménou této třetí strany.
Takže rozhodnutí o tom, zda bude cookie označena jako „first-party“ nebo „third-party“, je založeno na zdroji obsahu, který je na stránce načítán a který danou cookie vytváří.
Prohlížeč automaticky přiřazuje cookies k doméně, na které byl skript nebo obsah načten. Pokud je skript načten z externího zdroje (například externí JavaScriptový soubor), který patří jiné doméně než ta, na které se uživatel nachází, cookies vytvořené tímto skriptem budou označeny jako third-party cookies a budou přiřazeny k této externí doméně (jina-domena.cz).
Naopak, pokud je skript načten přímo ze stejné domény jako ta, na které se uživatel nachází (moje-domena.cz), cookies budou označeny jako first-party cookies a budou přiřazeny k této doméně.
Rozlišení je patrné podle cookie atributu “SameSite”, který je roven “None” pro cookies používané pro třetí strany: https://web.dev/articles/samesite-cookies-explained
Atribut SameSite
Všechny cookies třetích stran nejsou ty špatné. Aby toho nebylo málo, cookies třetích stran se totiž rozlišují ještě na další tři příchutě podle toho, jak s nimi má být webovým prohlížečem nakládáno. To určuje volitelný atribut SameSite. Konec podpory cookies třetích stran v hlavních prohlížečích se týká především cookies bez atributu SameSite nebo s atributem SameSite=None.
Tyto cookies mohou být posílány napříč různými weby, což umožňuje sledování uživatelů na webu a cílení reklam. Jak se cookies s různými nastaveními SameSite chovají:
- SameSite=Strict: Cookie je posílána pouze v případě, že požadavek pochází přímo z webu, který cookie nastavil. To znamená, že při přechodu z jiného webu cookie nebude posílána.
- SameSite=Lax: Toto je výchozí nastavení v některých prohlížečích, včetně Chrome. Cookie jsou posílány s požadavky generovanými z přímých návštěv webu. Například, když uživatel klikne na odkaz na nějakém webu, který vede na váš web, který nastavil cookie. To je považováno za bezpečné, protože uživatel aktivně naviguje na váš web.
- SameSite=None: Tato hodnota musí být explicitně nastavena, pokud chcete, aby byly cookies posílány i při cross-site požadavcích. Pro zajištění bezpečnosti musí být cookies s SameSite=None také označeny jako Secure, což znamená, že jsou posílány pouze přes zabezpečené spojení (HTTPS).
Pokud se mluví o konci podpory cookies třetích stran, obvykle se to týká cookies, které jsou nastaveny weby jinými než tím, který uživatel aktuálně prohlíží, a jsou typicky používány pro sledování uživatelů napříč různými weby. To zahrnuje cookies s atributem SameSite=None.