【问题标题】:What is the best way to pass sensitive data from page to page in ASP.NET MVC?在 ASP.NET MVC 中从一个页面到另一个页面传递敏感数据的最佳方法是什么?
【发布时间】:2012-05-10 08:54:08
【问题描述】:

我正在设计一个 Web 应用程序,该应用程序必须在页面之间传递敏感信息(例如用户的帐号),直到用户完成操作(该应用程序就像一个向导),用于记录目的。存储此数据的最佳方式是什么,以便流程中的每个页面都可以访问数据?我应该将它存储在会话中吗?在数据库中,然后在最后删除它?一些我还没有想到的方法?

【问题讨论】:

  • 可能将每个客户与一个 GUID 相关联,使用它从一个页面传递到另一个页面 - 检查它是否被篡改等等......然后可能是对 wcf 服务的服务调用以恢复更敏感的信息在您需要时,再次相应地锁定/
  • 感谢克里斯的评论,但我感兴趣的是该 GUID 的存储位置和方式。
  • 如果你在你的帖子中来回传递来自控制器 -> 视图等的参数,你应该没问题,对吧?我对 MVC3 很陌生,但如果你检查它没有被篡改,那么你应该在安全方面做得很好?

标签: c# asp.net asp.net-mvc asp.net-mvc-3


【解决方案1】:

我个人尽量避免使用会话where possible。以下是我在处理向导类型场景时所知道的选项:

选项 1

使用 Nadeem Afana's blog 中讨论的 JQuery。页面一一显示给用户,但直到最后一页才提交信息。

选项 2

每个页面上的信息都敏感吗?是否可以对其进行结构化,以便仅在最后一页上要求提供敏感信息?如果是这样,您可以按照Darin Dimitrovs answer 中的讨论跨页面序列化数据,而不是在最后一页上提供后退按钮。或者,可以使用相同的 MVC Futures 序列化软件轻松加密序列化的数据,尽管我不确定您的信息有多敏感以及您是否想要依赖它。答案还提到了诸如 Stepy 之类的替代方案,但我对此没有经验。

选项 3

如果信息很敏感,您可以在请求之间将信息写入/读取到数据库。

选项 4

最后,如果您不能使用上述任何一项,那么我将使用 Session 或 TempData(它是会话的包装器),但请注意,使用 TempData,如果用户刷新页面,则信息将丢失.

【讨论】:

  • 感谢您的回答。我相信只有 3 或 4 个对我有用。我需要敏感信息来记录每个步骤,以便我们知道用户是否遇到错误以及他们是否完成了整个工作流程。
【解决方案2】:

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

只要确保它不会到达网络客户端。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    • 2011-03-13
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 2020-11-20
    • 2020-04-02
    相关资源
    最近更新 更多