首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >django: csrftoken与csrfmiddlewaretoken表单值

django: csrftoken与csrfmiddlewaretoken表单值
EN

Stack Overflow用户
提问于 2011-04-07 22:22:41
回答 3查看 13.4K关注 0票数 24

试着学习安全知识。出于好奇为什么在django中提交表单( POST)时,有两个单独的“元素”包含相同的csrf令牌值:

代码语言:javascript
运行
复制
- the csrftoken cookie:
     COOKIES:{'csrftoken': '1effe96056e91a8f58461ad56c0d4ddc', ...

- the Form's hidden csrfmiddlewaretoken:
     POST:<QueryDict: {u'csrfmiddlewaretoken': 
                       [u'1effe96056e91a8f58461ad56c0d4ddc'], ...

如果django在将隐藏的csrf字段/值发送到浏览器(GET)时将其插入表单,并且在接收帖子时期望返回相同的值,那么为什么还需要设置cookie呢?

一个更普遍的问题是,如果其中任何一个丢失(表单,cookie),您能提供一个场景来解释如何利用这个漏洞(安全攻击)吗?

顺便说一句,我运行了几个简单的测试,以确保django分别检查每个测试的有效性,实际上是这样的:

  • 如果在发布之前更改表单的csrf值,我将得到以下调试错误: CSRF令牌丢失或不正确
  • 如果在发布之前删除csrf cookie,则会得到另一个错误: CSRF曲奇未设置。

我只是熟悉基本的csrf概念,并想了解django如何帮助防范这些类型的攻击。

谢谢,

jd

最新情况:

虽然这两种答案(S.Lott和M. DeSimone)都是信息丰富且有意义的,但我认为可以更详细地解释如何要求在表单和cookie中都存在安全值。当我在stackoverflow.com外搜索时,我看到了一篇博客文章from...Jeff Atwood。

我已经包括了第三个答案(很抱歉回答我自己的问题,但我认为这是相关的补充信息),指的是杰夫的博客文章,并包括一个引文。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5588374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档