会话安全存储登录名和密码哈希吗?

时间:2011-02-01 11:44:41

标签: c# .net security session object

为Intranet应用程序存储用户名和SHA1登录的最佳方法是什么?

会话相对安全的方式来保存多域信息,用户名和密码哈希等信息吗?我将它们保留为Session["data"] = customObject()

我是否需要执行任何其他步骤才能确保这些数据安全?是否存在可能受到危害的潜在安全问题或漏洞?某种会话注入?我应该使用一些私钥进程来锁定/打开会话数据以供阅读吗?

2 个答案:

答案 0 :(得分:4)

无论您采用哪种方式存储密码哈希都是安全的。散列密码的想法是不能将其反向设计到密码中。这就是为什么散列密码是推荐的做法并且通常存储在数据库中的原因(即ASP.net成员资格提供者)。你使用加密,但恕我直言的安全性不如散列。

在会话状态中存储哈希密码,inProc,sqlserver或会话服务器都可以。存储原始密码应该是一种悬而未决的行为。

您可以避免通过表单或网址信息将散列密码暴露给世界,因为SHA1已被确定为不安全。我建议使用SHA256,但无论如何都不要发布哈希值。

我想知道你为什么要保留这些信息。我想不出它有什么价值。密码经过哈希处理后,不能用于将用户重新认证到其他站点。

答案 1 :(得分:0)

这取决于您的会话数据的存储位置。如果是InProc,可能不用太担心。如果在SQL服务器上,风险稍微大一些,但仍然是你无法控制的。如果由于某种原因将会话状态数据存储在页面状态中,那么就会出现问题。