我正在使用ASP.NET MVC創建一個系統來填寫在線作業應用程序。這只是一個讓我熟悉MVC框架的實驗。我絕對不是安全專家,所以我只想在這裏得到一些建議,因爲這個網絡應用程序將處理敏感信息。在MVC視圖之間保持數據的最標準方式是什麼?
該系統具有類似嚮導的一組視圖。您從一個視圖到另一個視圖填充相關信息,直到您最終提交相關信息。
每個作業應用程序都使用GUID主鍵存儲在數據庫中。現在我只是將該GUID存儲在每個頁面視圖的隱藏字段中。這可以很容易地更新控制器的型號,像這樣:
[HttpPost]
public ActionResult ExampleAction(FormCollection formValues)
{
Guid appId = new Guid(Request.Form["ModelId"]); // the GUID stored in the hidden field
ExampleModel example = db.Entities.Single(e => e.ModelId == appId);
UpdateModel(example, formValues);
db.SaveChanges();
return RedirectToAction("ExampleAction2", new { appId = appId.ToString() });
}
我知道這是不是安全的,因爲任何人與任何類型的開發經驗,知道你可以在任何瀏覽器的開發工具編輯隱藏字段的值。那麼安全獲得相同結果的推薦方法是什麼?
他們可以編輯該字段,當然。如果他們將其編輯爲無效,只需折騰應用程序即可。如果他們將其編輯爲有效的,那麼他們如何獲得某人的GUID? – Brandon 2012-07-17 23:09:31
你只想保留GUID? MVC的一個關鍵特性是路由和詳細URL。這意味着,如果在顯示ID時沒有問題,請將其放在URL上,例如'jobs/view/GUID'或'jobs/apply/GUID'。否則,我會保留在會議 – 2012-07-17 23:23:08
@Brandon我不擔心他們劫持另一個應用程序 - 這實際上是不可能的。只是想隱藏用戶的實現細節。 – jebar8 2012-07-18 03:04:32