我正在处理ASP.NET MVC中的一个典型的CRUD应用程序,其中将有多个用户帐户,每个用户帐户都有多个项目。保护ASP.NET MVC中的URL上的ID
当用户正在编辑项目时,他们将在URL上执行此操作,例如/edit/5,其中数字表示数据库中行的ID。
我对一个用户简单地将ID更改为另一个用户的项目的ID并能够更改它有一些担忧。为了保护ID,下面的解决方案已经发生在我身上:
- 进行加密,这样就不能轻易改变 - 但是我当然有代码每次回发到解密。
- 更改数据库模式,以便在ID旁边也生成GUID,并在URL中使用该GUID。
保留可读ID作为是并包括已登录用户的用户ID中的查询的项,以便查询看起来像:
database.Items.SingleOrDefault(C => c.UserID == [当前登录in user ID] & & c.ID == itemID);
也许有更好的方法或我没有想到的方法。您希望避免这个问题的首选方法是什么?
我同意。您应该确保该用户有权编辑该项目。 – pattersonc 2009-11-12 16:09:29