了解 SameSite Cookie 与 Cloudflare 的交互
了解 SameSite Cookie 与 Cloudflare 的交互
了解 SameSite Cookie 的信息,以及它如何防止跨站点请求伪造(CSRF)。
本文内容
概述
Google Chrome 的 SameSite Cookie 改变了 Google Chrome 处理 SameSite 控件的方式。Google 强制执行 SameSite,以防止跟踪用户的营销 Cookie 和允许攻击者窃取或操纵您的 Cookie 的跨站点请求伪造(CSRF)。
SameSite Cookie 具有 3 种不同的模式:
- Strict:Cookie 由第一方(所访问的域)创建。例如,在访问 Cloudflare.com 时 Cloudflare 会设置第一方Cookie。
- Lax:Cookie 由域顶端(如 *.foo.com)创建。例如,如果有人(blog.naughty.com)热链接了图像(img.foo.com/bar.png),客户端不会将 Cookie 发送到 img.foo.com,因为它既不是第一方,也不是顶端上下文。
- None:Cookie 与所有请求一起发送。
Cloudflare Cookie 的 SameSite 设置包括:
Cloudflare Cookie | SameSite 设置 | 仅 HTTPS |
---|---|---|
__cfduid | SameSite=Lax | 否 |
__cf_bm | SameSite=None; Secure | 是 |
cf_clearance | SameSite=None; Secure | 是 |
__cfruid | SameSite=None; Secure | 是 |
__cflb | SameSite=Lax | 否 |
SameSite 和 cf_clearance Cookie 的已知问题
在解决了 Cloudflare CAPTCHA 或 JavaScript 质询(例如对于 Firewall Rule 或 IP Access Rule),客户端浏览器中会设置一个 cf_clearance Cookie。cf_clearance Cookie 的默认寿命是 30 分钟,但可以通过Cloudflare Firewall 应用的 Settings 选项卡中的 Challenge Passage 进行配置。
Cloudflare 自 cf_clearance Cookie 起使用 SameSite=None,以便来自不同主机名的访问者请求不会遇到后续的质询或错误。使用 SameSite=None 时,必须与 Secure 标志一同设置。
使用 Secure 标志需要通过 HTTPS 连接发送 Cookie。如果您的网站上有任何部分使用 HTTP,cf_clearance Cookie 会默认为 SameSite=Lax,并可能会导致问题。
如果您的网站上有任何部分使用 HTTP,则 cf_clearance Cookie 默认为 SameSite =Lax,这可能会导致网站无法正常运作。要解决问题,请将您的网站流量迁移到 HTTPS。Cloudflare 提供了两个功能来协助您: