【问题标题】:Is it secure to store values in session?在会话中存储值是否安全?
【发布时间】:2010-12-28 23:29:36
【问题描述】:

我正在开发一个 Web 应用程序,其中 UserId 和 RoleId 起着至关重要的作用...将这些值存储在会话中是否安全。其他可以是隐藏字段、cookie..哪个更安全?

对此有任何建议...

【问题讨论】:

  • 我们将用户 ID 和角色分配存储在会话状态中,这很好。即使这些值被泄露,它们也不会提供身份验证详细信息或类似内容。例如。密码和敏感的用户详细信息绝对不会存储在会话变量中。会话变量更安全,但通常 Web 服务器位于 DMZ 中,这是一个不太安全(更暴露)的环境。 HTH :)
  • 好问题,存储数据(例如分配给当前用户的角色)可以提高性能,而无需检查数据库等(尤其是在 n 层架构中)。

标签: asp.net security session


【解决方案1】:

会话比 cookie 和隐藏字段更安全,因为它们保存在服务器上。 Cookie 通常不应包含敏感数据,即使是加密的,因为用户可以直接访问它们。隐藏字段也被发送到客户端,但根本不显示。因此,使用FireBug 等工具,您可以轻松显示此内容。

您可以在多个位置存储会话,例如在内存中(如果您不经常使用它们)或让 SQL 服务器维护它们。你可以得到更多关于会话here的信息。会话是安全的,因为它们存储在服务器端。

【讨论】:

  • 您可以通过断点在您的 Web 服务器上调试会话变量(例如通过 Visual Studio),我认为这比 Firebug 更容易。
  • 我假设最终用户的观点。他们可以使用 FireBug 显示页面上存在的任何隐藏字段/cookie。
【解决方案2】:

会话变量比 cookie 更安全,因为它们位于您的服务器上,而不是用户的计算机上。会话并不完美——它们可以通过窃取会话密钥成为hijacked。不过,这比仅获取保存在计算机上的 cookie 更难。

【讨论】:

  • 好点,但是数据包嗅探可以轻松识别会话密钥。
  • (上面的意思是同意你所说的,忽略“但是”:P)
【解决方案3】:

当我需要在会话中存储“易受攻击的”数据时,我会在存储之前对数据进行加密。加密选项是动态创建的,不会存储在任何地方,因此如果会话 ID 被泄露,黑客将无法解密数据。存在性能开销,因此我只存储需要安全的值。

【讨论】:

    【解决方案4】:

    Session 绝对比隐藏字段或 cookie 更安全。

    不同的是,SESSION 值存储在 SERVER 上,隐藏字段和 cookie 存储在客户端上。

    【讨论】:

      【解决方案5】:

      Session 会比 cookie 更安全(session 存储在服务器的内存中,cookie 会从这里发送到客户端)。

      【讨论】:

        猜你喜欢
        • 2010-12-10
        • 2015-05-15
        • 1970-01-01
        • 2013-11-04
        • 2018-05-10
        • 2012-10-12
        • 2014-10-27
        • 2018-02-19
        • 2018-07-05
        相关资源
        最近更新 更多