在创建允许修改模型的表单时,我正在阅读我应该使用的[Bind(Exclude =“ID”)]。
我理解为什么以及如何帮助......但我不明白为什么它会起作用。
使用内置的MVC模板创建编辑视图时......它仍然使用Html-Hidden来存储ID变量。在Post期间,我需要使用ID变量来知道需要更新哪个数据库记录。
但是,我不能相信ID变量,因为它可能会在帖子中被劫持。
所以,我在ID上使用了Bind-exclude。另外,我不能相信隐藏变量......那么我的POST应该如何传递表格中正在编辑哪条记录的ID?
我能想到的唯一解决方案是使用一个Session变量来跟踪(在服务器端)正在编辑的记录。
为什么人们不怕这个? MVC在绑定过程中是否有额外的内容以确保ID未被更改?
有人可以解释一下我对MVC安全性的理解吗?
答案 0 :(得分:2)
你正在编辑记录。然后,当某人编辑记录时,它不会成为安全问题。该记录是否来自之前的GET无关紧要。
如果您有关于谁可以编辑哪些记录的任何业务规则,那么您应该(始终)在帖子上重新验证这些规则。