【问题标题】:Issue with crsf in DjangoDjango中的crsf问题
【发布时间】:2019-06-08 02:07:32
【问题描述】:

我正在尝试学习 django,并且我正在为一些敏感的操作实现 csrf 令牌。 但是当我拦截请求/响应时,我在 cookie 字段中的每个请求和我实际实现了 csrf_token 的网页中都得到 csrf_token,在这些请求中,我得到另一个 csrf 令牌作为数据中的 csrfMiddleware 参数。 所以我想知道为什么我的请求和响应中有两个 csrf_tokens。

POST /demo/login/ HTTP/1.1
Host: xx.xx.xx.xx:8000
User-Agent: xxxxxx
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://xx.xx.xx.xx:8000/demo/login/
Content-Type: application/x-www-form-urlencoded
Content-Length: 125
Connection: close
Cookie: csrftoken=n4bSbWP8p9Uce3b5iAxI0UvDG0qQq7B3OwBXisww754LYztEm0wFf9ARLpVM2v7W
Upgrade-Insecure-Requests: 1

csrfmiddlewaretoken=VIqUszlij0OLyTgYEp7V2TRsNUtBqkISmaQZz52G1WYkipyxIP6Sh8WGSjYx2IeL&username=qwerty6&password=password%40123

【问题讨论】:

  • 添加你的表单 html 部分
  • 看起来您已经发明了一种 CSRF 保护,而之前已经有了。向我们展示你所做的一些细节!
  • 我只使用 {% csrf_token%} 在我的登录页面 (html) 中包含 csrf 令牌。

标签: python django csrf


【解决方案1】:

根据Django documentation

对于存储在cookie中的值:

为了防止BREACH攻击,令牌不仅仅是秘密;一个随机盐被添加到秘密中并用于对其进行加扰。

对于csrfmiddlewaretoken

名称为csrfmiddlewaretoken 的隐藏表单字段出现在所有传出的 POST 表单中。同样,该字段的值是秘密的值,其中添加了盐并用于对其进行加扰。每次调用 get_token() 时都会重新生成 salt,以便在每次此类响应中更改表单字段值。

因此,由于以不同的方式加扰,值会有所不同。

【讨论】:

  • 拥有两个 csrf_token 是否安全?
  • 正如我所说,在两个不同版本中出现的值基本相同,因为它的加扰方式不同。这就是它应该如何工作,是的......
  • 好的..谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-04
  • 2015-11-06
  • 2015-10-17
  • 2011-10-29
  • 2011-08-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多