我了解Django's comments framework是专为匿名公众评论而设计的,就像您通常会在博客或艺术品下面看到的那样。换句话说,任何人都可以发表评论。
我使用评论框架只允许登录用户显示评论。 name
隐藏了URL
,email
和comment
字段(保留安全字段)。因此,用户只能看到request.user
字段。我想使用Django的评论,因为它已经有一些很好的安全功能,如时间戳检查,蜜罐字段和反双重发布功能。用户信息是从comment.user.get_full_name
I did was modify the form.html
获取的,我通过comment.name
获取有关评论的用户信息,反对comment.user.email
或comment.email
vs {{1 }}
我也开始了解Django的CSRF保护。在大多数情况下,人们谈论CSRF如何防止黑客通过使用他们的cookie或其他东西从登录用户的银行账户转账。
就我而言,CSRF会阻止人们以其他用户身份发帖吗?换句话说,黑客可以创建自己的POST表单并在不同的user.pk
下发布以伪造其他人吗?
答案 0 :(得分:3)
直接回答您的问题 - 不,CSRF不允许黑客伪装成其他用户并提交评论。它可以允许攻击者让真正的登录用户为他们提交评论。
CSRF是一种攻击,未经访问资源的人会欺骗有权访问该资源的人。
因此,例如,CSRF保护可以阻止某人欺骗用户发布带有垃圾邮件或恶意软件链接的评论。或者,他们诱骗用户制作的请求可能会格式错误,导致您的网络服务器崩溃,或者包含旨在漏掉验证过程并导致数据库损坏或以其他方式危害您网站的代码。
因此,如果没有CSRF保护,理论上,某人可以欺骗登录用户提交他们实际上没有写的评论。
通过CSRF保护,Django将检测到它不是通过您网站上的实际表单提交的真实数据,并将拒绝它。