ASP.NET MVC中传递敏感数据的最佳方法是什么?

4
我正在设计一个网络应用程序,需要在用户完成操作后(应用程序类似于向导),传递敏感信息(例如用户的账户号码)以进行日志记录。最好的存储方式是什么,以便该过程中的每个页面都可以访问数据?我应该将数据存储在会话中吗?还是应该在数据库中存储,然后在结束时将其删除?还是有其他我没有想到的方法?

可能将每个客户与GUID关联起来,使用它在页面之间传递 - 检查是否被篡改等等...然后,可能需要调用WCF服务来获取更敏感的信息,根据需要再次进行锁定。 - Chris
谢谢你的评论,Chris。但是我感兴趣的是在哪里以及如何存储那个GUID。 - Daniel T.
如果你在控制器(controller) -> 视图(view)等之间来回传递参数,那么你应该没问题,对吧?我对MVC3还很陌生,但如果你检查过它并且没有被篡改,那么从安全角度来看应该是没问题的。 - Chris
2个回答

2

在可能的情况下,我个人试图避免使用会话。在处理向导类型场景时,以下是我所知道的选项:

选项1

Nadeem Afana的博客所讨论的那样,使用jQuery。页面逐一显示给用户,但信息直到最后一页才提交。

选项2

每个页面上的信息都是敏感的吗?是否可以结构化,使得敏感信息只在最后一页被要求提供?如果是这样的话,您可以像Darin Dimitrovs answer中讨论的那样跨页面序列化数据,并且在最后一页不提供返回按钮。另外,使用相同的MVC Futures序列化软件可以轻松加密序列化的数据,但我不确定您的信息有多敏感,以及您是否想依靠它。答案还提到了一些替代方案,例如Stepy,但我没有使用过。 选项3 如果信息很敏感,您可以在请求之间将信息写入/读取数据库。 选项4 最后,如果您无法使用以上任何方法,我会使用Session或TempData(它是Session的包装器),但请注意,使用TempData时,如果用户刷新页面,则信息将丢失。

谢谢你的回答。我相信只有3或4个适合我。我需要敏感信息来记录每一步,以便我们知道用户是否遇到错误以及他们是否完成了整个工作流程。 - Daniel T.

0

对我来说,会话听起来不错,它(几乎)自动消失。
如果你很偏执,那么你可以加密它或将其存储在其他地方,并通过哈希找到它。这个“其他地方”就是你下一个足够安全的点。

只要确保它不会到达Web客户端即可。


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