Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django';s评论框架和CSRF_Python_Django_Csrf_Django Comments_Django Csrf - Fatal编程技术网

Python Django';s评论框架和CSRF

Python Django';s评论框架和CSRF,python,django,csrf,django-comments,django-csrf,Python,Django,Csrf,Django Comments,Django Csrf,我知道这个网站是为匿名公众评论而设计的,就像你在博客或艺术品下面经常看到的那样。换句话说,任何人都可以发表评论 我使用的评论框架只允许登录用户显示评论。选择并隐藏名称、URL和电子邮件字段(保留安全字段不变)。因此,用户几乎只看到一个注释字段。我想使用Django的评论,因为它已经有了一些很好的安全特性,比如时间戳检查、蜜罐字段和反双重发布特性。用户信息是从请求中获取的。user我通过comment.user.get\u full\u name获得有关注释的用户信息,而不是comment.nam

我知道这个网站是为匿名公众评论而设计的,就像你在博客或艺术品下面经常看到的那样。换句话说,任何人都可以发表评论

我使用的评论框架只允许登录用户显示评论。选择并隐藏
名称
URL
电子邮件
字段(保留安全字段不变)。因此,用户几乎只看到一个
注释
字段。我想使用Django的评论,因为它已经有了一些很好的安全特性,比如时间戳检查、蜜罐字段和反双重发布特性。用户信息是从
请求中获取的。user
我通过
comment.user.get\u full\u name
获得有关注释的用户信息,而不是
comment.name
comment.user.email
vs
comment.email

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


在我的例子中,CSRF是否阻止人们以其他用户的身份发布?换句话说,黑客是否可以创建自己的帖子表单,并在不同的
用户.pk下发布,以假冒他人?

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

CSRF是一种攻击,在这种攻击中,没有权限访问资源的人欺骗有权限访问资源的人

因此,例如,CSRF保护可以防止有人欺骗用户发布带有垃圾邮件或恶意软件链接的评论。或者,他们诱骗用户提出的请求可能格式错误,导致Web服务器崩溃,或者包含的代码可能会在验证过程中滑过,对数据库造成损坏,或者以其他方式破坏您的站点

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


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

如果黑客注册并成功登录,并且在试图发布评论时,他修改了post响应,并将用户ID更改为他自己的ID以外的内容,该怎么办(但其他一切保持不变,如CSRF)。难道他不能以其他人的身份发布评论吗?这是否意味着,我应该忽略用户帖子中的
评论。user
,并在
视图.py
下声明类似
评论.user=request.user.pk
的内容?@hobbes3是的,这是避免被伪造的方法。好的,谢谢你的建议。回到我的问题,我想问你我对伪造用户评论的黑客场景的假设是什么?