【发布时间】:2014-06-24 16:37:27
【问题描述】:
我有以下问题: 在我的 ASP.NET MVC 应用程序中,我想在我的数据库中存储一些键/值设置。 其中一些键/值设置包含密码,我想对其进行加密以保护它们。
我无法对密码进行哈希处理,因为我需要一些密码才能在远程 SMTP 服务器上进行身份验证。
在 MSDN 上,我发现了一个关于使用“受保护的配置提供程序”保护配置设置的 article,但我不想将这些设置存储在我的 web.config 文件中。
我考虑使用 DpapiProtectedConfigurationProvider,它使用一些机器和用户特定的属性作为加密密钥,但这个提供程序只适用于 XML 配置节点。
另一个 MSDN article 是关于 ProtectedData 类的,但是这种方法真的安全吗?
那么,在 C# 应用程序中存储密码的最佳方法是什么?
我还阅读了以下其他问题,但没有找到解决方案: Question 1、Question 2、Question 3
问候
【问题讨论】:
-
如果您的进程需要能够在无人值守的情况下解密数据,而您又不能使用 Dpapi,那么您就很不幸,没有任何选项真的那么安全。
-
还有其他可能的选择吗?
-
为什么反对在web.config中存储加密/解密密钥?如果您要存储加密数据并需要对其进行解密,则需要将解密密钥存储在某个位置。
-
是的,但我想将密钥存储在安全的位置,并且 web.config 还需要使用加密方法进行保护。我不想使用多个配置位置,因为我想将所有数据和配置相关的东西存储在一个中心位置(例如数据库)。
-
您所说的称为密钥管理。可以说是密码学最困难的方面。有专门从事此方面的第三方软件提供商,但如果您想自己尝试解决它,我可以为您指出我不久前给出的答案:stackoverflow.com/questions/1583553/…
标签: c# .net asp.net-mvc security encryption