Django csrf令牌如何工作?

roc*_*tor 3 python django django-csrf

我不清楚使用Django表单的csrf令牌。我在表单提交中拥有此文件,并且看到它是动态生成的。如果捕获我与提琴手的会话并尝试提交没有该令牌的表单,则会收到403错误。但是我不明白的是,我可以使用提琴手使用相同的令牌提交尽可能多的数据,因此我不理解此令牌的安全性。如果有人入侵您的表单,他们可以使用相同的令牌。

我是否缺少一些其他步骤来确保令牌始终是唯一的?

Y.N*_*Y.N 5

然后您的应用程序准备表单,Django 将 csrf 令牌用于当前用户会话。因此,黑客只能破解为他们自己的登录生成的表单。

要模拟攻击,您可以尝试打开表单会话,输入一些内容,然后在更改SECRET_KEY设置时,重新加载服务器并提交表单数据。

现在您已收到 csrf 错误消息,因为 csrf 令牌取决于 SECRET_KEY.

文档中阅读更多内容


dor*_*oru 5

CSRF token确保只有源自受信任域中的形式可用于POST数据返回。因此,它不会验证数据或表单发送多少数据,而是验证数据是否来自合法域(通常是您的站点)中的表单。因此,名称为:跨站点请求伪造保护。

文档

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

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

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

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

CSRF保护不能抵御中间人攻击,因此请结合使用HTTPS和HTTP Strict Transport Security。它还假定已验证HOST标头,并且您的站点上没有任何跨站点脚本漏洞(因为XSS漏洞已使攻击者能够做CSRF漏洞允许的任何操作,并且更糟)。