据我所知,Django's comments framework是为匿名公众评论而设计的,就像您在博客或artcile下面常见的一样。换句话说,任何人都可以发表评论。Django的评论框架和CSRF
我使用的评论框架只允许登录用户显示评论。什么I did was modify the form.html
和隐藏name
,URL
,和email
字段(保持安全字段完好)。所以用户几乎看不到comment
字段。我想使用Django的评论,因为它已经有一些很好的安全功能,比如时间戳检查,蜜罐字段和反双重发布功能。从request.user
RequestContext中获取用户信息,并且我获得有关comment.user.get_full_name
与comment.name
或comment.user.email
与comment.email
相对的评论的用户信息。
我也开始阅读关于Django的CSRF保护。在大多数情况下,人们谈论CSRF如何防止黑客通过使用cookie或其他方式从登录用户的银行账户转账。
在我的情况下,CSRF阻止人们发布为其他用户吗?换句话说,黑客是否可以创建自己的POST表单并在不同的user.pk
下发布以伪造其他人?
如果黑客注册并成功登录,并在尝试发表评论时,他会修改POST响应并将用户标识更改为除自己以外的其他内容(但保持其他所有内容相同,如CSRF)。他会不会以别人的身份发表评论? – hobbes3 2012-04-07 20:13:48
这是否意味着,我应该忽略用户POST中的'comment.user',并在'views.py'下声明'comment.user = request.user.pk'? – hobbes3 2012-04-07 20:15:11
@ hobbes3是的,这是避免伪造的方法。 – agf 2012-04-08 05:11:03