存储密码哈希的最安全的地方

时间:2011-09-18 14:03:40

标签: c#

我知道我需要将它存储为散列,然后将这些值进行比较,但是我应该在哪里发送此散列以便稍后进行比较?

4 个答案:

答案 0 :(得分:3)

请参阅ProtectedData课程。它使用DPAPI,实际上适合提供中级安全性。与IsolatedStorage相结合,对于大多数用途来说已经足够了。

答案 1 :(得分:1)

答案 2 :(得分:1)

它存储在哪里并不重要。答案是:对你的应用程序有意义。

这可能是您已有的其他存储机制。考虑将其放在其他用户相关信息的位置:

  • 数据库
  • 注册表(你没有提到这是WinForms还是其他)
  • 本地存储(赢取电话)
  • 致电网络服务

建议将其保留在用户无法轻易掌握的位置。是的,这是一个哈希,但是当人们开始搞乱这个价值时会有问题。尽量让它远离你的视线。

答案 3 :(得分:0)

如果您可以集成现有的AuthN / AuthZ机制,请使用它而不是自己动手。

OAuth就是这样一种机制。

如果你必须自己动手,那么:

  • 使用数据库存储数据
  • 尽可能保护数据库(让安全公司/专家或DBA了解他们正在做什么)
  • 接受密码为a SecureString
  • Use a Salt
  • 在服务器上对内存中的密码进行哈希处理,并将其与之前存储在数据库中的哈希进行比较
  • 使用没有已知漏洞的单向哈希函数,例如SHA256
  • System.Cryptography
  • 获取哈希函数实现