【发布时间】:2016-11-05 04:11:17
【问题描述】:
阅读此section of the Django docs,他们建议在 cookie 中设置一个 csrftoken,然后让客户端框架将其放入将在服务器端请求上验证的标头中。但是,在 cookie 中包含令牌是否会破坏目的,因为 cookie 是根据每个用户的请求发送的?
或者这里的“安全性”是 Django 在标头中检查该值而不是检查 cookie 值本身?
我确实理解为什么这适用于同步提交,但在这种情况下,csrftoken 直接写入页面而不是存储在 cookie 中,这似乎更安全。
来自OWASP page on reviewing code for CSRF:
检查请求是否有有效的会话 cookie 是不够的,我们 需要检查每个发送的 HTTP 请求是否发送了唯一标识符 到应用程序。 CSRF 请求不会有这个有效的唯一性 标识符。 CSRF 请求没有这个唯一请求的原因 identifier 是唯一的 ID 在页面上呈现为隐藏字段 并在按下链接/按钮后附加到 HTTP 请求 选择。攻击者将不知道这个唯一 ID,因为它 是随机的,并且每个链接、每个页面动态呈现。
【问题讨论】:
标签: javascript django csrf django-csrf