我正在设计一个网络应用程序,需要在用户完成操作后(应用程序类似于向导),传递敏感信息(例如用户的账户号码)以进行日志记录。最好的存储方式是什么,以便该过程中的每个页面都可以访问数据?我应该将数据存储在会话中吗?还是应该在数据库中存储,然后在结束时将其删除?还是有其他我没有想到的方法?
在可能的情况下,我个人试图避免使用会话。。在处理向导类型场景时,以下是我所知道的选项:
选项1
如Nadeem Afana的博客所讨论的那样,使用jQuery。页面逐一显示给用户,但信息直到最后一页才提交。
选项2
每个页面上的信息都是敏感的吗?是否可以结构化,使得敏感信息只在最后一页被要求提供?如果是这样的话,您可以像Darin Dimitrovs answer中讨论的那样跨页面序列化数据,并且在最后一页不提供返回按钮。另外,使用相同的MVC Futures序列化软件可以轻松加密序列化的数据,但我不确定您的信息有多敏感,以及您是否想依靠它。答案还提到了一些替代方案,例如Stepy,但我没有使用过。 选项3 如果信息很敏感,您可以在请求之间将信息写入/读取数据库。 选项4 最后,如果您无法使用以上任何方法,我会使用Session或TempData(它是Session的包装器),但请注意,使用TempData时,如果用户刷新页面,则信息将丢失。对我来说,会话听起来不错,它(几乎)自动消失。
如果你很偏执,那么你可以加密它或将其存储在其他地方,并通过哈希找到它。这个“其他地方”就是你下一个足够安全的点。
只要确保它不会到达Web客户端即可。