Skip to main content
 首页 » 编程设计

python之Django的评论框架和CSRF

2024年08月30日32fff_TT

据我了解 Django's comments framework专为匿名公众评论而设计,就像您在博客或文章下面经常看到的那样。换句话说,任何人都可以发表评论。

我使用评论框架只允许登录用户显示评论。什么I did was modify the form.html并隐藏了 name、URL 和 email 字段(保持安全字段不变)。所以几乎用户只能看到一个 comment 字段。我想使用 Django 的注释,因为它已经具有一些不错的安全功能,例如时间戳检查、蜜 jar 字段和反双重发布功能。用户信息是从 request.user RequestContext 抓取的我通过 comment.user.get_full_name 获取有关评论的用户信息,而不是 comment.name 或 comment.user.email vs comment.email.

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

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

请您参考如下方法:

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

CSRF 是一种攻击,无权访问资源的人欺骗有权访问它的人。

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

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

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