将密码放入配置文件有什么好办法?

Mat*_*and 6 .net security

我有一堆.Net配置文件,其中包含Windows服务帐户和/或SQL服务器登录的密码.我想从配置文件中取出它们并使它们更安全.

在配置文件中使用密码有什么好办法?

谢谢

Mic*_*ael 8

我不同意这里给出的答案。假设您的程序需要在没有人输入密码的情况下启动,则该程序需要以任何方式访问一些明文凭据。如果您加密配置文件,那么将解密该配置文件的密钥放在哪里?加密配置文件并不会带来任何好处,它只会使管理变得更加困难,而且安全性没有明显的提高。

最后,您必须依赖持有该凭证的机器的安全性。尽可能地强化它,尽可能地限制对其的访问。

有一篇更长的文章详细阐述了这一事实。


Kri*_*ner 4

您实际上可以加密配置文件的部分。正如您在问题中询问的那样,它并不与配置文件“分离”,但它比在配置文件中存储未加密/明文密码更安全。

加密连接字符串的示例(从命令提示符):

aspnet_regiis -pe "connectionStrings" -app "/SampleApplication" -prov "RsaProtectedConfigurationProvider"
Run Code Online (Sandbox Code Playgroud)

请注意,同样的技术可以应用于连接字符串之外的部分。

请参阅教程:https://msdn.microsoft.com/en-us/library/zhhddkxy%28v=vs.140%29.aspx

要解密和加密 Web.config 文件的一部分,ASP.NET 进程必须有权读取适当的加密密钥信息。有关更多信息,请参阅导入和导出受保护的配置 RSA 密钥容器。

应用程序将能够本机使用加密值,但如果用户可以通过文件共享访问配置文件,则字符串仍将被加密。

另一个教程可能有一些附加信息: http://www.codeproject.com/Tips/795135/Encrypt-ConnectionString-in-Web-Config

请注意,使用适当的密钥可以逆转加密。最安全的选择是锁定远程并共享对存储配置文件的区域的访问。如果没有其中任何一个,除了服务器管理员之外,任何人都无法访问您的配置文件。

  • 如果有人访问了您的服务器,那么您就已经失败了。据我所知,此时您无能为力。 (2认同)