当前的答案表明我们目前不应该。但是在未来什么时候我们可以开始依赖这个呢?
比较 caniuse 和 MDN 支持表中的数据。您可以观察到不存在支持 TLS 1.3 且不支持 SameSite cookie 的浏览器。
浏览器 |
同站点 |
TLS 1.3 |
边缘 |
16 |
79 |
火狐 |
60 |
63 |
铬合金 |
51 |
70 |
苹果浏览器 |
12 + 莫哈韦 |
12.1 + 莫哈韦 |
歌剧 |
39 |
57 |
iOS |
12 |
12.2 |
从这张表来看,一个非常方便的答案(因为我们无法有效地测试 SameSite cookie)是:
- 当您在 Web 服务器上禁用 TLS 1.2 及更低版本时。
- 如果您不允许在同一域(包括所有子域)上使用用户生成的表单
一旦不再可能与 TLS 1.2 连接。访问您网站的所有浏览器都将支持 SameSite cookie 并强制执行设置。
要重新迭代设置:
SameSite=严格
- 完美保护来自不同域的所有请求。
- 没有对子域的保护。
pages.github.com
仍然可以针对github.com
. 如果您打算允许用户托管的内容,则需要继续使用传统的 CSRF 令牌或使用单独的域,例如github.io
不受信任的内容。
SameSite=松懈
- 依赖 HTTP 动词进行保护。CSRF 保护与确保敏感操作永远不会响应 GET 请求一样好。
- 没有对子域的保护。
pages.github.com
仍然可以针对github.com
. 如果您打算允许用户托管的内容,则需要继续使用传统的 CSRF 令牌或使用单独的域,例如github.io
不受信任的内容。
相同站点=无
你注定要失败。继续使用传统的 CSRF 令牌。