关于使用Django编辑现有模型记录的问题,我有一个关于this answer的问题。
如果您有想要编辑
之类的记录的视图def edit(request, id):
...
恶意用户是否可以更改表单id
中的action
来编辑除他最初访问的编辑页面以外的记录?换句话说,为什么将id放在对视图的调用中是安全的,而不是通过POST传递id?
答案 0 :(得分:0)
你好像错过了这部分答案:
@login_required
def edit(request, id=None, template_name='article_edit_template.html'):
if id:
article = get_object_or_404(Article, pk=id)
if article.author != request.user:
return HttpResponseForbidden()
else:
article = Article(author=request.user)
您可以看到我们检查当前登录的用户是否是帖子的作者。如果不是这种情况,我们会返回一个HttpResponseForbidden。
正如您所说,任何用户都可以更改网址中的ID并尝试查看其他记录的编辑页面,您有责任确保只有正确的用户才能编辑帖子。