在Web主机上存储密码或私钥的最佳方法是什么?

我不是指不必使用的密码(例如网站上其他用户的密码 – 在这种情况下我真的不需要存储它们。请参阅https://stackoverflow.com/a/ 1054069/939213 。)所以简单地存储哈希不是一种选择。

我指的是将密码存储到SQL数据库以及共享服务器上的软件必须使用的私钥。

我认为没有真正安全的方法来做到这一点。 我只是想知道在这种情况下最好的是什么。

我试图让他们远离黑客(在同一个网络主机上或不在黑客上)。 不是其他有权查看文件的人。

这将是使用它们的ASP.Net代码隐藏。

Windows专门为此提供了Data Protection API(DPAPI)。 查看ProtectedData类以从.NET中使用它。

DPAPI的优点是您的敏感数据是基于Windows用户的登录凭据加密的,这意味着除非您的Windows帐户遭到入侵,否则它是安全的。

存储密码的最佳方法是不存储密码。 使用集成(Windows)身份validation连接到SQL Server。 这涉及将IIS应用程序池作为特定(Windows)用户运行,并授予该用户访问权限以登录数据库并运行所需的查询。

另请参见SQL Server集成身份validation模式

除了更安全,它表现更好。 使用每用户连接字符串会使连接池失效。

编辑:

如果您绝对必须存储密码,那么在ASP.NET中使用加密连接字符串是可行的方法。 这需要使用DPAPI正确存储连接字符串和机器密钥,减少你搞砸它的可能性,并认为你没有把它固定好。

另外: 在web.config中加密连接字符串