首页 > 解决方案 > Web.config c#中连接字符串的加密

问题描述

我在 .NET Framework 中有一个 Web API,现在 UID 和密码在连接字符串中以纯文本形式出现。由于安全扫描,我希望这些值在 Web 配置中加密,而不是纯文本。

纯文本中的连接字符串:

<connectionStrings>
    <add name="DataConnection1" connectionString="Data Source=server1;Initial Catalog=db1;Integrated Security=True" providerName="System.Data.SqlClient" />
    <add name="DataConnection2" connectionString="Data Source=server1;Initial Catalog=db2;Integrated Security=True" providerName="System.Data.SqlClient" />
    <add name="DataConnection3" connectionString="Data Source=server2;Initial Catalog=db123;UID=usn;PWD=password@123" providerName="System.Data.SqlClient" />
</connectionStrings>

我对连接字符串的加密进行了研究。其中一种方法是使用 ASPNET_REGIIS 实用程序。但由于部署应用程序的服务器上存在一些与访问相关的限制,我无法使用 RsaProtectedConfigurationProvider。

只是想帮助找出一些其他方法来加密网络配置的连接字符串。

标签: c#.netencryptionwebapi

解决方案


您不必使用 RsaProtectedConfigurationProvider。有一些替代方案,主要是 DpapiProtectedConfigurationProvider(指定受保护的配置提供程序)。

也可以以编程方式保护配置(ProtectSection):

Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
ConfigurationSection connectionStrings = config.GetSection("connectionStrings");
section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");
config.Save(ConfigurationSaveMode.Full);

如果您在使用具有管理员权限的 *.ProtectedConfigurationProvider 时遇到问题,请查看此处:Web.config encryption as normal user


推荐阅读