在ASP.NET MVC(缺省路由),我想使用URL這樣的返回與表單視圖編輯顧客:在ASP.NET MVC中比隱藏表單字段更安全嗎?
/Customers/Edit/5
我需要利用CustomerId=5
,但我不希望允許客戶改變it.Right現在我做隱藏ID使用:
<%= Html.Hidden("CustomerId") %>
這實現了我想要的東西,但我的印象就是那個隱藏的表單變量是不安全的,可以由最終用戶操縱。
那麼,允許客戶編輯他們的信息而不是他們的ID的最佳方式是什麼?
我看到如何配置控制器操作,以便只有授權用戶才能看到特定ID的視圖,但我看不到如何防止用戶更改該ID。例如,用戶可能被授權查看/ Customers/Edit/10,但是他們可以在提交表單時更改ID並編輯他們未被授權查看的ID(例如/ Customers/Edit/11)。我想我需要檢查提交的表單,以確保ID是我發送給他們的第一位。 – royco 2009-04-20 05:37:58
您必須檢查當前登錄的用戶是否有權查看/編輯所請求的ID。因此,在您的控制器操作中,您檢索用戶名(例如使用Thread.CurrentPrincipal.Identity.Name),並檢查您的數據庫是否允許此用戶執行他嘗試執行的操作(根據請求的操作查看或編輯)。因此,如果用戶更改了ID,他仍然無法查看\編輯他不允許的內容。實際上,他甚至沒有理由嘗試改變ID ... – 2009-04-20 07:32:13