试着学习安全知识。出于好奇为什么在django中提交表单( POST)时,有两个单独的“元素”包含相同的csrf令牌值:
- the csrftoken cookie:
COOKIES:{'csrftoken': '1effe96056e91a8f58461ad56c0d4ddc', ...
- the Form's hidden csrfmiddlewaretoken:
POST:<QueryDict: {u'csrfmiddlewaretoken':
[u'1effe96056e91a8f58461ad56c0d4ddc'], ...如果django在将隐藏的csrf字段/值发送到浏览器(GET)时将其插入表单,并且在接收帖子时期望返回相同的值,那么为什么还需要设置cookie呢?
一个更普遍的问题是,如果其中任何一个丢失(表单,cookie),您能提供一个场景来解释如何利用这个漏洞(安全攻击)吗?
顺便说一句,我运行了几个简单的测试,以确保django分别检查每个测试的有效性,实际上是这样的:
我只是熟悉基本的csrf概念,并想了解django如何帮助防范这些类型的攻击。
谢谢,
jd
最新情况:
虽然这两种答案(S.Lott和M. DeSimone)都是信息丰富且有意义的,但我认为可以更详细地解释如何要求在表单和cookie中都存在安全值。当我在stackoverflow.com外搜索时,我看到了一篇博客文章from...Jeff Atwood。
我已经包括了第三个答案(很抱歉回答我自己的问题,但我认为这是相关的补充信息),指的是杰夫的博客文章,并包括一个引文。
https://stackoverflow.com/questions/5588374
复制相似问题