2

我知道Django 的评论框架是为匿名公共评论而设计的,就像你通常在博客或文章下面看到的那样。换句话说,任何人都可以发表评论。

我使用评论框架只允许登录用户显示评论。我所做的是修改form.html并隐藏nameURLemail字段(保持安全字段不变)。所以几乎用户只看到一个comment字段。我想使用 Django 的评论,因为它已经具有一些不错的安全功能,例如时间戳检查、蜜罐字段和防双重发布功能。用户信息是从request.user RequestContextcomment.user.get_full_name中获取的,我通过as oppose to comment.nameor comment.user.emailvs获取有关评论的用户信息comment.email

我也开始阅读 Django 的 CSRF 保护。在大多数情况下,人们谈论 CSRF 如何防止黑客通过使用他们的 cookie 或其他东西从登录用户的银行账户中转移资金。

就我而言,CSRF 是否会阻止人们以其他用户的身份发帖?换句话说,黑客可以创建自己的 POST 表单并以不同的方式发布user.pk以伪造其他人吗?

4

1 回答 1

3

直接回答您的问题——不,CSRF 不允许黑客冒充另一个用户并提交评论。它可能允许攻击者让一个真实的登录用户为他们提交评论。

CSRF 是一种攻击,其中未经许可访问资源的人欺骗有权访问资源的人。

因此,例如,CSRF 保护可以防止有人欺骗用户发布带有垃圾邮件或恶意软件链接的评论。或者,他们诱骗用户提出的请求可能格式不正确,导致您的网络服务器崩溃,或者包含旨在通过验证过程并导致数据库损坏或以其他方式损害您的网站的代码。

因此,如果没有 CSRF 保护,理论上有人可以欺骗登录用户提交他们实际上没有写的评论。

使用 CSRF 保护,Django 将检测到它不是通过您网站上的实际表单提交的真实数据,并将拒绝它。

于 2012-04-03T09:13:54.397 回答