Django 1.2中是否还需要{%csrf_token%} CSRF保护标记?

时间:2010-12-01 09:54:08

标签: django csrf

我正在测试我网站上的CSRF保护,我注意到了一些意想不到的事情。

我从表单中删除了{% csrf_token %},提交仍然有效。我无法理解为什么。然后我查看了源代码并意识到令牌仍然在<form>元素旁边。我更改了表单的ID,以确保它确实更新了源代码,但是隐藏的输入仍然存在。

我正在使用Django 1.2。 {% csrf_token %}还有必要吗?

干杯

2 个答案:

答案 0 :(得分:4)

经过更多调查后,如果表单包含方法{% csrf_token %},则表示始终插入post,而如果表单没有,则显示{{1}}。 Django非常聪明的自动保护。

答案 1 :(得分:2)

来自文档:

  

在Django 1.1中,模板标签不存在。相反,使用了重写POST表单以包含CSRF令牌的后处理中间件。如果您要从1.1版或更早版本升级网站,请阅读此部分和下面的Upgrading notes

     

http://docs.djangoproject.com/en/dev/ref/contrib/csrf/#legacy-method