← Dokumentace WAF / troubleshooting
Interakce cookies SameSite s Cloudflare
Google Chrome vynucuje chování cookies SameSite ↗, abyste se chránili před marketingovými cookies, které sledují uživatele, a útoky Cross-site Request Forgery (CSRF), které útočníkům umožňují ukrást nebo zneužít vaše cookies.
SameSite atribut cookie má tři různé režimy:
- Striktní: Cookies vytváří první strana (navštívená doména). Cookie první strany je například nastavena Cloudflare při návštěvě
cloudflare.com. - Lax: Cookies se odesílají pouze na apex domény (například
example.com). Pokud například někdo (blog.example.net) použil přímý odkaz na obrázek (img.example.com/bar.png), klient neodesílá cookie naimg.example.comprotože se nejedná ani o kontext první strany, ani o kontext apex. - Žádné: Cookies se odesílají s každým požadavkem.
SameSite nastavení pro Cookies Cloudflare patří:
| Cookie Cloudflare | Nastavení SameSite | Pouze HTTPS | Partitioned (CHIPS) |
|---|---|---|---|
__cf_bm |
SameSite=None; Secure |
Ano | Ne |
cf_clearance |
SameSite=None; Secure |
Ano | Ano |
__cflb |
SameSite=Lax |
Ne | Ne |
Atribut SameSite v cookies session affinity
Chcete-li v současné době nakonfigurovat SameSite atribut na cookies session affinity musíte použít Cloudflare API (například Create Load Balancer operaci).
Chcete-li nakonfigurovat hodnotu SameSite atribut cookie, zahrňte samesite a secure atributy JSON ve svém HTTP požadavku uvnitř session_affinity_attributes objekt.
Dostupné hodnoty pro tyto dva atributy jsou následující:
samesite atribut:
- Platné hodnoty:
Auto(výchozí),Lax,None,Strict.
secure atribut:
- Platné hodnoty:
Auto(výchozí),Always,Never.
Auto hodnotu pro samesite atribut bude mít následující chování:
- Pokud Always Use HTTPS je zapnuto, cookies session affinity použijí
LaxRežim SameSite. - Pokud Always Use HTTPS je vypnuto, cookies session affinity použijí
NoneRežim SameSite.
Auto hodnotu pro secure atribut bude mít následující chování:
- Pokud Always Use HTTPS je zapnuto, cookies session affinity budou obsahovat
Securev atributu SameSite. - Pokud Always Use HTTPS je vypnuto, cookies session affinity nebudou obsahovat
Securev atributu SameSite.
Pokud nastavíte samesite na None ve vašem API požadavku nelze nastavit secure na Never.
Pokud potřebujete konkrétní SameSite konfiguraci ve vašich cookies session affinity, Cloudflare doporučuje, abyste zadali hodnoty pro samesite a secure odlišné od Auto, místo spoléhání na výchozí chování. Díky tomu hodnota SameSite atribut cookie se v důsledku změn konfigurace nezmění (konkrétně Always Use HTTPS).
Známé problémy se SameSite a cf_clearance cookies
Když návštěvník vyřeší challenge zobrazena kvůli vlastní pravidlo nebo pravidlo IP Access, cf_clearance cookie je nastavena v prohlížeči návštěvníka. cf_clearance cookie má výchozí dobu platnosti 30 minut, kterou můžete nastavit pomocí Challenge Passage.
Cloudflare používá SameSite=None v cf_clearance cookie, aby požadavky návštěvníka z různých hostname nenarazily na další ověřování nebo chyby. Když SameSite=None se používá, musí být nastaveno společně s Secure příznak.
Pomocí Secure flag requires sending the cookie via an HTTPS connection. If you use HTTP on any part of your website, the cf_clearance cookie má ve výchozím nastavení hodnotu SameSite=Lax, což může způsobit, že váš web nebude fungovat správně.
Chcete-li problém vyřešit, přesměrujte provoz svého webu na HTTPS. Cloudflare k tomuto účelu nabízí dvě funkce:
Partitioned cookies (CHIPS) a cf_clearance
Cloudflare nastaví Partitioned atribut na cf_clearance cookie (a na interní cf_chl_* cookies používaných platformou Challenge Platform), aby vyhověl Cookies Having Independent Partitioned State (CHIPS) ↗ ↗.
S CHIPS se cookie nastavená v kontextu třetí strany (například uvnitř iframe nebo z prostředku mezi weby) ukládá do oddílu vázaného na web nejvyšší úrovně, místo aby byla sdílená napříč všemi weby, které danou třetí stranu vkládají. V prohlížečích založených na Chromiu, které cookies třetích stran blokují, se tím zachová stav ověření pro vkládaný obsah mezi weby, který by jinak přestal fungovat. V prohlížečích, které CHIPS neimplementují, Partitioned atribut je ignorován a chování se nemění.
Partitioned atribut se neaplikuje na __cf_bm.
Dopad na vložené výzvy
Protože cf_clearance je rozdělen (partitioned), oprávnění získané v jednom kontextu nejvyšší úrovně se nepoužije v jiném kontextu nejvyšší úrovně. Návštěvník, který úspěšně projde ověřením při přímém procházení webu, toto oprávnění automaticky nepřenese na jiný web, který jej vkládá, a naopak. Jedná se o zamýšlené chování podle specifikace CHIPS.
Partitioned vyžaduje SameSite=None; Secure
Partitioned atribut má účinek pouze na cookies, které jsou také nastaveny s SameSite=None; Secure. Pokud vaše stránka neposkytuje veškerý provoz přes HTTPS, cf_clearance cookie se vrátí k výchozí hodnotě SameSite=Lax (viz Známé problémy se SameSite a cf_clearance cookies), a Partitioned atribut nemá žádný účinek.