【问题标题】:.NET MVC + Sensitive Data.NET MVC + 敏感数据
【发布时间】:2009-12-15 17:34:38
【问题描述】:
我正在遍历自定义数据对象列表并以可分页格式将数据输出到屏幕。每个项目都需要提供编辑详细信息(重定向到另一个视图)和删除数据的能力。为此,我需要传递某种 id 来标识将要更新或删除的记录。我不想将此 id 作为纯文本包含在路由值中,但不知道如何实现此功能。我有两个想法,但不确定是否可行。
每次生成列表时为每个 id 创建一个随机密钥,并将密钥/id 组合存储在会话中。然后,我可以在路由值中传递密钥,并在用户单击操作时获取密钥。这似乎需要很多工作
将“编辑”和“删除”选项包装在一个表单中,这样我可以使用隐藏的输入通过 POST 传递数据。然而,这似乎不太理想。
当我在一个页面上处理多个项目时,是否有任何标准化的方式来利用视图/控制器关系中的敏感数据?
【问题讨论】:
标签:
.net
model-view-controller
【解决方案1】:
只需在敏感数据进入视图之前对其进行加密。并发送加密值并在控制器处解密。示例:
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,这也应该非常安全。