在SQL中存储密码的最佳方法是什么?最终需要以纯文本形式存在?

时间:2014-10-30 12:26:54

标签: c# sql sql-server security

对于用户密码,我们应该始终对它们进行哈希处理,然后将哈希值和盐存储在数据库中。但是,存储最终需要以纯文本形式存储的密码的最佳做法是什么?我不习惯在SQL中存储纯文本密码,但我必须将密码发送到库以便它可以访问某些内容。

我的想法是我可以在数据库服务器上存储加密的密码,然后在Web服务器上解密。如果两者都受到损害,我就搞砸了。但如果只有一个如果受到损害,加密会给我足够的时间来更改密码。

你们都在想什么?

3 个答案:

答案 0 :(得分:0)

为了更安全,只需散列密码并保存,然后您可以在需要进行身份验证时将用户密码输入与数据库中的哈希代码进行比较。

答案 1 :(得分:0)

如果您确实需要获得纯文本形式的密码(这实际上并不是一个好主意),您可以对安全用户密码使用对称加密。但是你必须弄清楚如何保密私钥。我的意思是您需要在代码中使用私钥才能解密数据。此外,您的所有开发人员都可以访问私钥,这意味着他们也可以访问纯文本。

另外,我建议你阅读这篇文章。它正在比较散列和加密用户密码。 http://www.darkreading.com/safely-storing-user-passwords-hashing-vs-encrypting/a/d-id/1269374

答案 2 :(得分:-1)

Microsoft为此用例提供API作为Crypto API的一部分。它不是特别容易使用,但提供比在文本文件或数据库中存储密钥更好的安全性。

公平地假设如果攻击者可以访问您的数据库服务器,他们可以访问您环境中的每个系统;即使您认为您有时间更改密码",您如何知道您的系统已遭到入侵?直到很久以后才发现大多数攻击......