.NET MVC + 敏感数据

3
我正在迭代遍历一个自定义数据对象列表,并以可分页格式将数据输出到屏幕上。每个项目都需要提供编辑详细信息(重定向到另一视图)和删除数据的功能。为此,我需要传递某种ID来标识要更新或删除的记录。我不想将此ID作为明文包含在路由值中,但不知如何实现此功能。我有两个想法,但不确定哪个更可行。
  1. 每次生成列表时为每个ID创建随机密钥,并将密钥/ ID组合存储在会话中。然后,我可以在路由值中传递密钥,并在用户单击操作时获取密钥。这似乎是很多工作。
  2. 将“编辑”和“删除”选项包装在表单中,在其中使用隐藏输入通过POST传递数据。这似乎不太理想。
当我在页面上处理多个项目时,在视图/控制器关系中利用敏感数据是否有任何标准化的方法?
1个回答

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,这应该非常安全。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接