← Dokumentace WAF / troubleshooting
Interakce cookie SameSite s Cloudflarem
Google Chrome vynucuje chování cookies dle SameSite ↗ k ochraně proti marketingovým cookies sledujícím uživatele a proti Cross-site Request Forgery (CSRF), které útočníkům umožňuje krást nebo manipulovat vaše cookies.
The SameSite atribut cookie má tři různé režimy:
- Strict: Cookies vytváří první strana (navštívená doména). Například first-party cookie nastavuje Cloudflare při návštěvě
cloudflare.com. - Lax: Cookies se odesílají pouze na apex doméně (například
example.com). Například pokud někdo (blog.example.net) hotlinkoval obrázek (img.example.com/bar.png), klient neodešle cookie naimg.example.comprotože nejde ani o first-party, ani o apex kontext. - None: Cookies se odesílají se všemi požadavky.
SameSite nastavení pro Cookies Cloudflare zahrnují:
| Cookie Cloudflare | Nastavení SameSite | HTTPS Only | Partitioned (CHIPS) |
|---|---|---|---|
__cf_bm |
SameSite=None; Secure |
Ano | Ne |
cf_clearance |
SameSite=None; Secure |
Ano | Ano |
__cflb |
SameSite=Lax |
Ne | Ne |
Atribut SameSite v session affinity cookies
V současnosti je ke konfiguraci SameSite atribut na session affinity cookies musíte použít Cloudflare API (například Create Load Balancer operace).
Chcete-li nakonfigurovat hodnotu SameSite atribut cookie, zahrňte samesite a secure JSON atributy ve vašem HTTP požadavku, uvnitř session_affinity_attributes objekt.
Dostupné hodnoty těchto dvou atributů jsou následující:
samesite atributem:
- Platné hodnoty:
Auto(výchozí),Lax,None,Strict.
secure atributem:
- Platné hodnoty:
Auto(výchozí),Always,Never.
The Auto hodnotu pro samesite atribut bude mít následující chování:
- Pokud Always Use HTTPS je zapnuto, budou session affinity cookies používat
Laxrežimu SameSite. - Pokud Always Use HTTPS je vypnuto, cookies pro session affinity použijí
Nonerežimu SameSite.
The Auto hodnotu pro secure atribut bude mít následující chování:
- Pokud Always Use HTTPS je zapnuto, budou session affinity cookies obsahovat
Securev atributu SameSite. - Pokud Always Use HTTPS je vypnuto, cookies pro session affinity nebudou obsahovat
Securev atributu SameSite.
Pokud nastavíte samesite na None ve svém API požadavku, nemůžete nastavit secure na Never.
Pokud vyžadujete konkrétní SameSite konfiguraci v cookies session affinity, Cloudflare doporučuje zadat hodnoty pro samesite a secure odlišné od Auto, namísto spoléhání na výchozí chování. Tímto způsobem hodnota SameSite atribut cookie se nezmění v důsledku změn konfigurace (konkrétně Always Use HTTPS).
Známé problémy se SameSite a cf_clearance cookies
Když návštěvník vyřeší challenge zobrazené kvůli vlastní pravidlo nebo IP access pravidlo, cf_clearance cookie se nastaví v prohlížeči návštěvníka. cf_clearance cookie má výchozí životnost 30 minut, kterou můžete nakonfigurovat přes Challenge Passage.
Cloudflare používá SameSite=None v cf_clearance cookie, aby požadavky návštěvníků z různých hostname nenarážely na pozdější challenge nebo chyby. Když SameSite=None se používá, musí být nastaven společně s Secure flag.
Pomocí Secure flag vyžaduje odesílání cookie přes HTTPS spojení. Pokud na jakékoli části webu používáte HTTP, cf_clearance cookie má výchozí hodnotu SameSite=Lax, což může způsobit, že váš web nebude fungovat správně.
Problém vyřešíte převedením provozu webu na HTTPS. Cloudflare k tomu nabízí dvě funkce:
Partitioned cookies (CHIPS) a cf_clearance
Cloudflare nastavuje Partitioned atribut na cf_clearance cookie (a na interní cf_chl_* cookies používané platformou Challenge Platform), aby vyhověly Cookies Having Independent Partitioned State (CHIPS) ↗ ↗.
S CHIPS je cookie nastavená v third-party kontextu (například uvnitř iframe nebo z cross-site subresource) uložena v oddílu vázaném na top-level web, místo aby byla sdílena napříč všemi weby, které danou třetí stranu vkládají. V prohlížečích na bázi Chromia, které blokují third-party cookies, to zachovává stav challenge pro cross-site vložení, která by jinak nefungovala. V prohlížečích, které CHIPS neimplementují, Partitioned atribut je ignorován a chování se nemění.
The Partitioned atribut se nepoužije na __cf_bm.
Dopad na vložené challenge
Protože cf_clearance je partitionovaná, clearance získaná v jednom top-level kontextu se nepoužije v jiném top-level kontextu. Návštěvník, který projde challenge při přímém prohlížení webu, si tuto clearance automaticky nepřenese na jiný web, který jej vkládá (embed), a naopak. Toto je zamýšlené chování v rámci CHIPS.
Partitioned vyžaduje SameSite=None; Secure
The Partitioned atribut se uplatní pouze u cookies, které jsou zároveň nastaveny s SameSite=None; Secure. Pokud váš web neobsluhuje veškerý provoz přes HTTPS, cf_clearance cookie přechází na SameSite=Lax (viz Známé problémy se SameSite a cf_clearance cookies) a Partitioned atribut nemá žádný účinek.