.NET MVC +敏感数据

时间:2009-12-15 17:34:39

标签: .net model-view-controller

我正在迭代自定义数据对象列表,并以可分页格式将数据输出到屏幕。每个项目都需要能够编辑细节(重定向到另一个视图)并删除数据。为了做到这一点,我需要传递某种id来识别将要更新或删除的记录。我不想在路由值中将此id作为纯文本包含在内,但是如何实现此功能则不知所措。我有两个想法,但不确定是否可行。

  1. 每次生成列表时为每个id创建一个随机密钥,并将密钥/ id组合存储在sesion中。然后,我可以在路径值中传递密钥,并在用户单击操作时抓取密钥。这似乎是很多工作

  2. 在表格中包装“编辑”和“删除”选项,我可以使用隐藏的输入通过POST传递数据。然而,这似乎不那么令人满意。

  3. 当我在页面上处理多个项目时,是否有任何标准方法可以在视图/控制器关系中使用敏感数据?

1 个答案:

答案 0 :(得分: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,这也应该是非常安全的。