2009-12-15 114 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,这也应该是非常安全的。