Mar*_*tin 4 security asp.net-mvc
我正在使用ASP.NET MVC中的典型CRUD应用程序,其中将有多个用户帐户,每个用户帐户都有许多项目.
当用户正在编辑项目时,他们将在诸如/ edit/5之类的URL上执行此操作,其中数字表示数据库中行的ID.
我有一些用户担心只是将ID更改为另一个用户的项目的ID并能够更改它.为了保护ID,我发现了以下解决方案:
保留可读ID,并在项目查询中包含登录用户的UserID,以便查询如下所示:
database.Items.SingleOrDefault(c => c.UserID == [当前登录的用户ID] && c.ID == itemID);
也许有一种更好的方式或方式我没有想到.您首选的方法是防止此问题?
绝对是第三种解决方案.从加密的 cookie中获取登录的用户ID (参见FormsAuthentication),并在SQL查询中使用它来验证该项属于用户.
| 归档时间: |
|
| 查看次数: |
1230 次 |
| 最近记录: |