现在 cookie 可以有 HTTPOnly、Secure 和 SameSite 标志。HTTPOnly 和 Secure 标志的用途非常明确。但是 SameSite 脚本究竟能防止什么以及如何防止呢?
此外,当不使用 SameSite 标志时,成功的“攻击”或“滥用”场景会是什么样子?
现在 cookie 可以有 HTTPOnly、Secure 和 SameSite 标志。HTTPOnly 和 Secure 标志的用途非常明确。但是 SameSite 脚本究竟能防止什么以及如何防止呢?
此外,当不使用 SameSite 标志时,成功的“攻击”或“滥用”场景会是什么样子?
实际答案应该一如既往:这取决于您的使用场景。
该Strict
值将阻止浏览器在所有跨站点浏览上下文中将 cookie 发送到目标站点,即使在遵循常规链接时也是如此。例如,对于类似 GitHub 的网站,这意味着如果登录的用户点击公司讨论论坛或电子邮件上发布的私人 GitHub 项目的链接,GitHub 将不会收到会话 cookie,并且用户将无法访问该项目。但是,银行网站很可能不希望允许从外部站点链接任何交易页面,因此该Strict
标志在这里最合适。
Lax
对于希望在用户从外部链接到达后保持用户登录会话的网站,默认值提供了安全性和可用性之间的合理平衡。在上面的 GitHub 场景中,当从外部网站跟踪常规链接时,会话 cookie 将被允许,而在 CSRF 倾向的请求方法(例如POST
)中阻止它。