Django csrf令牌如何工作?

我不清楚使用Django表单的csrf标记。 我在表单提交中有这个,我看到它是动态生成的。 如果捕捉我的会议与提琴手,并尝试提交我的表单没有该令牌,我得到一个403错误。 但我不明白的是,我可以使用提琴手来提交尽可能多的数据,因为我需要使用相同的标记,所以我不明白这个标记的安全性。 如果有人盗用你的表格,他们可以使用相同的标记。

我是否缺少一些额外步骤以确保令牌始终是唯一的?


然后你的应用程序准备好表单,Django为当前用户会话使用csrf标记。 所以,黑客只能为自己的登录生成表单。

要模拟atack,你可以尝试打开表单会话,键入内容并在设置中更改SECRET_KEY时,重新加载服务器并提交表单数据。

现在你已经得到了csrf错误消息,因为csrf标记依赖于SECRET_KEY

在文档中阅读更多信息


CSRF token仅确保只有源自受信任域的表单才能用于发回数据。 因此,它不验证数据或表单发送的数据量,但数据来自合法域(通常是您的站点)的表单。 因此名称:跨站请求伪造保护。

从文档:

每次用户登录时都会更改CSRF令牌。

使用Firebug,Chrome开发工具等“窃取”或修改自己的令牌不是一个漏洞。

攻击者无法窃取用户浏览器的CSRF cookie。

如果某人有权(通过中间人攻击或xss)访问您的csrftoken cookie,那么这是一个漏洞:

CSRF保护无法防范中间人攻击,因此请使用HTTP严格传输安全性的HTTPS。 它还假定验证HOST头,并且在您的站点上没有任何跨站点脚本漏洞(因为XSS漏洞已经让攻击者执行任何CSRF漏洞允许的更严重的事情)。

链接地址: http://www.djcxy.com/p/56549.html

上一篇: How does the Django csrf token work?

下一篇: a series of form posts with django results in 403 error