在Django中为简单注释表单添加CSRF保护

时间:2010-04-29 14:30:01

标签: python django blogs

我在Django有博客评论表格,我想知道以下内容:

  1. 我应该在表单中添加CSRF吗?
  2. 如果我想使用简单的“render_comment_form”方法,我该如何添加它?
  3. 如果我不能这样添加,那么最佳做法是什么?
  4. 关于这个主题的每个教程或讨论似乎都有不同的方法,我不确定我是否理解这一切是如何运作的。

1 个答案:

答案 0 :(得分:1)

我的回答是假设你使用的是Django 1.2:

  1. 是!您应该保护POST请求发送到服务器的所有数据免受CSRF攻击。
  2. 您无需自行添加令牌。这已经由django完成了。看看default template that is used by the render_comment_form tag,您会看到csrf_token已经包含在内。您可以在项目中覆盖此模板,并将CSRF令牌包含在其中就像将{% csrf_token %}写入表单一样简单。
  3. 即使您未在模板中设置令牌,也可以保护表单。看看django's documentation about that topic。但是这种方法被标记为 遗产 方法,因此不建议使用它 - 它仅提供向前兼容Django的版本1.2。