2009-12-15 151 views
3

我遍歷自定義數據對象列表並以可分頁格式將數據輸出到屏幕。每個項目都需要提供編輯細節(重定向到另一個視圖)和刪除數據的功能。爲了做到這一點,我需要傳遞某種標識來標識將要更新或刪除的記錄。我不想將這個ID作爲純文本包含在路由值中,但是對於如何實現這個功能卻不知所措。我有兩個想法,但不確定兩者是否可行。.NET MVC +敏感數據

  1. 每次生成列表時都爲每個ID創建一個隨機密鑰並將密鑰/ ID組合存儲在會話中。然後,我可以將密鑰傳遞給路由值,並在用戶單擊某個操作時獲取密鑰。這看起來像很多工作

  2. 將「編輯」和「刪除」選項包裹在一個表單中,我可以使用隱藏輸入通過POST傳遞數據。然而,這似乎不太理想。

當我在頁面上使用多個項目時,是否有任何標準化的方式來利用視圖/控制器關係中的敏感數據?

回答

0

在敏感數據進入視圖之前對其進行加密。併發送加密值並在控制器上解密。例如:

public ActionResult RenderPage() 
{ 
    CustomerInformation customerInformation = CustomerInformation.GetCurrentCustomer(); 
    customerInformation.SocialSecurityNumber = MyNamespace.Utilities.Encrypt(customerInformation.SocialSecurityNumber); 
    return View(customerInformation); 
} 

並在響應中,你可以做到這一點。

public ActionResult SubmitData(CustomerInformation customerInformation) 
{ 
    customerInformation.SocialSecurityNumber = MyNamespace.Utilities.Decrypt(customerInformation.SocialSecurityNumber); 
    return View(); 
} 

正如你所看到的,數據在它出去之前就被加密了,在返回的時候它又被解密了。當然,你也可以使用HTTPS,這也應該是非常安全的。