微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Set-Cookie HTTP 标头和 CSRF 的松散与严格

如何解决Set-Cookie HTTP 标头和 CSRF 的松散与严格

我只是在读https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie

Lax:cookie 不会在跨站点请求上发送,例如调用 加载图像或帧,但在用户导航到 来自外部站点的原始站点(例如,如果遵循链接)。这是 如果未指定 SameSite 属性,则为认行为。

如果这是认的,那么这不是意味着CSRF攻击不会发生吗? 如果有人加载一个后台运行 Javascript 的恶意网站,向受害者当前登录的网站发出简单的 POST 请求,那么认行为是不会发送 cookie,对吗?

另外,为什么有人会选择使用 Strict 而不是 Lax? 为什么您要阻止用户的浏览器在导航到原始网站时向该网站发送 cookie,而 Strict 正是这样做的?

解决方法

SameSiteLax 时,CSRF 攻击仍然可能发生。它可以防止您提到的跨站点 POST 攻击,但是如果网站通过 GET 请求触发不安全操作,那么它仍然是可能的。例如,许多网站目前会通过 GET 请求触发注销,因此攻击者可以轻松地将用户从其会话中注销。

标准的addresses this直接:

松懈的执行提供了合理的深度防御 CSRF 依赖于不安全的 HTTP 方法(如“POST”)的攻击,但不 提供针对 CSRF 作为一般攻击类别的强大防御:

  1. 攻击者仍然可以弹出新窗口或触发顶级 导航以创建“同一站点”请求(如 在第 5.2.1 节中描述),这只是沿路的减速带 剥削之路。

  2. <link rel='prerender'> 这样的特征可以 被利用来创建“同站点”请求而没有用户风险 检测。

鉴于此,有人会使用 Strict 的原因很简单:它可以防止更广泛的 CSRF 攻击。当然,这是一种权衡,因为它会阻止某些使用您网站的方式,但如果这些用例对您来说并不重要,那么这种权衡可能是合理的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。