【发布时间】:2011-10-19 19:18:05
【问题描述】:
在我的 MVC 应用程序中,我有一个页面供用户编辑其帐户详细信息,例如电子邮件地址、密码等。在我的数据库中,用户表保存这些数据,主键是 UserId。
在我创建的 ChangeAccountDetails 视图中,我传递了一个 ViewModel,其中包含用户应该能够在其帐户上修改的数据。我还将 UserId 存储在 ViewModel 中,它在我的实际视图中呈现为隐藏字段。我担心这是不安全的,因为在 POST 操作以保存更改的数据时,我的服务层会加载用户帐户详细信息的持久版本,该版本刚刚由 ViewModel 中发回的 UserId 更改。
我已使用 Fiddler 更改 POST 请求并将 UserId 更改为我数据库中另一个用户记录的 UserId,这可能会产生严重问题,因为有人可能会以这种方式更改其他人的密码和/或其他详细信息。
请有人建议我在使用 ViewModels 时如何避免此类问题。是不是在这种情况下使用 Session 是唯一的方法(我知道最好避免使用 Session 但为此目的呢)?
【问题讨论】:
标签: asp.net-mvc-3 session viewmodel security