使用cookie的CSRF令牌保护

时间:2013-07-22 04:12:25

标签: csrf csrf-protection

将csrf令牌保存在cookie中是一个好习惯还是在表单中使用隐藏字段更好?同样,每个用户请求都会重新生成csrf令牌,比如验证码正在做什么?

由于

3 个答案:

答案 0 :(得分:0)

最好将其包含在表格中。 CSRF令牌背后的想法是它不被动地传递(例如,如果恶意用户能够欺骗浏览器访问某些令人讨厌的URL)。 Cookie被动地传递。

答案 1 :(得分:0)

可以在OWASP网站的OWASP CSRF Prevention Cheat Sheet页面找到对此问题的最佳解释。

首先, 使用Cookie 作为CSRF令牌无济于事,因为所有Cookie,即使是秘密Cookie,也会随着每个请求一起提交。无论最终用户是否被欺骗提交请求,都将提交所有身份验证令牌。

其次,应用程序可以在表单中包含 隐藏输入参数 ,其常用名称为" CSRFToken"。必须随机生成此令牌的值,以便攻击者无法猜到它。

此外,挑战 - 响应是CSRF的另一个防御选项。它可以通过以下方式实现:

  1. CAPTCHA
  2. 重新验证(密码)
  3. 一次性令牌

答案 2 :(得分:0)

CSRF cookie肯定是开放的攻击,但实现安全,因为会话值将始终根据提交的令牌值进行检查,该值存储在请求的正文或标题中,因此我无法查看原因。 OWASP网站上列出的双重提交(仅限http与发布数据)或令牌同步器(会话与发布数据)模式是良好的实践,并且都使用cookie。

如前所述,双重提交将存储移动到客户端,因此被视为无状态,但无论哪种方式都是两个令牌进行比较,其中一个始终对攻击者来说是未知的。