我正在處理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