“双重提交 Cookie”的变体,用于防止 CSRF 攻击

问题描述 投票:0回答:1

通过这种简单的方法可以有效防止CSRF攻击吗:

  1. 在前端为每个请求生成一个 UUID
  2. 通过 cookie 和请求标头将此 UUID 发送到后端。
  3. 后端将比较接收到的两个 UUID。
  4. 如果它们匹配,则这是合法请求,否则不是。

这背后的思考过程是:

  1. 天真的攻击者不知道我们正在为每个请求设置请求标头
  2. 即使攻击者从转译的js文件中计算出来,他的网页也无法访问cookie,因此无法读取cookie中的值并设置标头
  3. 我不认为,他甚至可以为易受攻击的网站设置一个新的cookie

那么上述方法是否能有效缓解 CSRF 还是我的理解/方法完全错误?

javascript csrf
1个回答
0
投票

仅存在自定义标头即可为实现 CORS 协议的客户端提供针对 CSRF 的保护,如 是否可以使用自定义 HTTP 标头来防止 CSRF,因为浏览器会阻止站点将自定义 HTTP 标头发送到另一个站点?.

您的想法为可能无法正确实现 CORS 的客户端(也许是旧浏览器?)提供了额外的保护:即使不同站点上的恶意代码可以发出带有自定义标头的请求,它也无法将此标头设置为cookie 的值,因为 cookie 不可用于在不同站点上运行的 Javascript 代码。

这个推理也是你在#2 和#3 中所说的。但由于#1 依赖于攻击者不知道某些事情,因此它不提供真正的安全性(仅“通过默默无闻的安全性”)。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.