代码之家  ›  专栏  ›  技术社区  ›  ChessWhiz

敏感的ASP.NET会话数据需要加密吗?

  •  2
  • ChessWhiz  · 技术社区  · 14 年前

    ASP.NET会话[字符串密钥]数据是否需要加密以确保安全?

    如果这些数据总是保存在服务器上,那么只要数据是通过SSL从客户端发送的,存储信用卡信息、密码等是否安全?

    6 回复  |  直到 14 年前
        1
  •  2
  •   m.edmondson    14 年前

    任何敏感的东西都应该直接进入数据库,而不是在内存中停留超过需要的时间。我不明白你为什么需要在会话变量中存储密码或信用卡数据,你是在页面之间传递它们吗?

        2
  •  3
  •   ChessWhiz    14 年前

    我认为任何留在服务器内存中的东西,包括ASP.NET会话数据,都是安全的,不加密的。攻击者必须能够在服务器上执行代码才能读取内存。

    另一方面,一旦数据存储在数据库中,就应该对其进行加密。如果它被发送到客户机,它也应该被加密,但这超出了这个问题的范围。最后,当然,数据在从客户端到服务器的过程中必须加密。

        3
  •  2
  •   Joel Etherton    14 年前

    不。您不应该在会话中存储此信息。即使是加密的这些信息也很脆弱。会话可能会被劫持,服务器可能会被破坏,然后内存中碰巧作为明文使用的所有内容都将对任何使用十六进制编辑器的人可见。如果需要引用此信息,则应创建已存储且不可重放的散列,这些散列引用安全数据存储中的信息。

    编辑:对于那些认为会话数据是安全的人:

    http://en.wikipedia.org/wiki/Session_hijacking
    http://en.wikipedia.org/wiki/Session_fixation
    http://en.wikipedia.org/wiki/Session_poisoning
    http://www.owasp.org/index.php/2.0_Session_State_(in)security_(and_the_dangers_of_State_Server)

    有很多方法可以保护会话数据,但是如果您需要保留非常敏感的信息,如密码或信用卡号码,则会话不适合它。尝试按照萨班斯-奥克斯利法案(Sarbanes-Oxley)对银行和医疗应用程序的法律要求进行编码,您会在第一次审计中发现,这是首先要检查的内容之一。

    http://en.wikipedia.org/wiki/Session_management

        4
  •  1
  •   ArBR    14 年前

    我同意m.edmondson的观点,即敏感信息应该存储在数据库中(处理sql注入有很多技术)。同样为了保护你的网站,你应该使用HTTPS。但是,如果您要存储的信息对在页面之间传递不太敏感,可以使用会话变量,请不要忘记尽快删除此类变量。请记住,您可以平均到数据库检索数据,只有非敏感和耗时的数据才应该存储在会话作用域中。

        5
  •  0
  •   Wyatt Barnett    14 年前

    取决于——你对服务器上的其他应用程序信任多少?

        6
  •  0
  •   Joe Zack SW4    11 年前
    1. 这个问题是指存储在同一服务器内存中的数据,但这只是默认配置。还可以设置状态服务器、写入nosql db等。 由于云计算和平台即服务的兴起,无状态web服务器变得越来越普遍。

    这个具体问题的答案可能是“否”,但未来的读者可能也需要考虑这些附加项目。