如何在编辑/更新模型期间保护我的ID实体属性?

时间:2011-11-01 20:50:59

标签: c# asp.net-mvc entity-framework

在创建允许修改模型的表单时,我正在阅读我应该使用的[Bind(Exclude =“ID”)]。

我理解为什么以及如何帮助......但我不明白为什么它会起作用。

使用内置的MVC模板创建编辑视图时......它仍然使用Html-Hidden来存储ID变量。在Post期间,我需要使用ID变量来知道需要更新哪个数据库记录。

但是,我不能相信ID变量,因为它可能会在帖子中被劫持。

所以,我在ID上使用了Bind-exclude。另外,我不能相信隐藏变量......那么我的POST应该如何传递表格中正在编辑哪条记录的ID?

我能想到的唯一解决方案是使用一个Session变量来跟踪(在服务器端)正在编辑的记录。

为什么人们不怕这个? MVC在绑定过程中是否有额外的内容以确保ID未被更改?

有人可以解释一下我对MVC安全性的理解吗?

1 个答案:

答案 0 :(得分:2)

你正在编辑记录。然后,当某人编辑记录时,它不会成为安全问题。该记录是否来自之前的GET无关紧要。

如果您有关于谁可以编辑哪些记录的任何业务规则,那么您应该(始终)在帖子上重新验证这些规则。