【发布时间】:2012-01-22 08:30:45
【问题描述】:
我正在考虑将用户输入的密码存储在会话状态中。我需要注意哪些安全风险或问题?
【问题讨论】:
标签: asp.net-mvc-3 session-state
我正在考虑将用户输入的密码存储在会话状态中。我需要注意哪些安全风险或问题?
【问题讨论】:
标签: asp.net-mvc-3 session-state
是的。这只是一个非常糟糕的主意。您甚至不应该将密码存储在数据库中 - 最佳做法是存储密码的哈希值。因此,您可以验证密码,但如果有人可以访问数据库(或您的情况下的会话状态),他们实际上并没有用户的密码。
【讨论】:
在 asp.net 中,有很多地方可以存储会话数据。在开发中最常见的是 InProc,或者基本上在 RAM 内存中。但是,您有一天可能会决定使用不同的会话提供程序,例如数据库,或使用 Windows Azure 缓存。 在这两种情况下,以明文形式存储密码会使它们在通过网络传输时可见。
在上述场景中,会话数据通过网络传输,除非传输是通过 https 发送的,否则可以看到明文密码。
【讨论】:
Session 中可能会导致密码以明文形式通过网络发送,因为您可能会在某些时候使用外部会话存储机制。我认为这是一个很好的观点。 +1