缺少“SameSite”cookie 标志有何风险?

信息安全 Web应用程序 http 饼干 网站 同源策略
2021-08-13 21:08:55

现在 cookie 可以有 HTTPOnly、Secure 和 SameSite 标志。HTTPOnly 和 Secure 标志的用途非常明确。但是 SameSite 脚本究竟能防止什么以及如何防止呢?

此外,当不使用 SameSite 标志时,成功的“攻击”或“滥用”场景会是什么样子?

2个回答

SameSite标志的目标是:

  • 防止跨站点定时攻击(参见例如here
  • 防止跨站点脚本包含(请参见此处
  • 防止 CSRF:仅当发起请求的站点与目标站点位于同一站点时,才会发送 SameSite cookie(对于 GET 和 POST,严格模式下,仅针对 POST 请求在宽松模式下)。
  • 有限的隐私保护

实际答案应该一如既往:这取决于您的使用场景。

Strict值将阻止浏览器在所有跨站点浏览上下文中将 cookie 发送到目标站点,即使在遵循常规链接时也是如此。例如,对于类似 GitHub 的网站,这意味着如果登录的用户点击公司讨论论坛或电子邮件上发布的私人 GitHub 项目的链接,GitHub 将不会收到会话 cookie,并且用户将无法访问该项目。但是,银行网站很可能不希望允许从外部站点链接任何交易页面,因此该Strict标志在这里最合适。

Lax对于希望在用户从外部链接到达后保持用户登录会话的网站,默认值提供了安全性和可用性之间的合理平衡。在上面的 GitHub 场景中,当从外部网站跟踪常规链接时,会话 cookie 将被允许,而在 CSRF 倾向的请求方法(例如POST)中阻止它。