我是 Django 的新手。昨晚我努力开发了一个视图,该视图允许我编辑当前项目中的任何实体;章节、故事和世界。为了确保我准确地知道正在修改哪个数据库对象,我在表“编辑”中添加了一个数据库条目,该表存储了哈希、正在编辑的对象的类型(例如“章节”)以及该对象的 id在数据库中找到的对象。哈希作为隐藏输入添加到表单中。
在后端,提交表单后,我抓取哈希并使用它在数据库中查找相关的编辑项。然后我使用它来查找最初正在编辑的对象。这样做有两个原因:
我可以知道真正正在编辑的对象是什么。如果所有表单项都已更改,则没有什么可以比较(除了 URL)来实际知道正在编辑的对象。
用户应该无法破解前端来做一些奇怪的事情,比如修改错误的故事。
今天我发现 Django 有一个通用视图,叫做update_object
. 这似乎为我处理了很多事情。但鉴于它不会自动使用数据库来确保正在编辑正确的对象,甚至不会确定正在编辑的对象,这是否安全?肯定有一种简单的方法可以在前端通过修改 HTML 元素来破解它。
其次,如果这值得关注,您会建议我保留自己的编辑视图,还是扩展 update_object 视图,或其他解决方案?
最后,我是否以正确的方式进行?如果我没有以正确的方式考虑解决这个问题,请纠正我。
我不觉得这是一个需要代码的问题。这更像是一个关于表单安全性的一般性问题,因为它们与 Django 相关。
谢谢,
典范RG