【问题标题】:Encryption of connection strings in Web.config c#Web.config c#中连接字符串的加密
【发布时间】:2020-06-10 16:22:21
【问题描述】:

我在 .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。

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

【问题讨论】:

  • 我们解决此问题的方法是使用集成身份验证,然后您根本不必将用户名/密码放在 web.config 中。您只需创建一个对您的数据库具有权限的活动目录 ID,然后让您的应用程序的 IIS 应用程序池在该 ID 下运行。另一种解决方法是将连接字符串保留在注册表中。

标签: c# .net encryption webapi


【解决方案1】:

您不必使用 RsaProtectedConfigurationProvider。有一些替代方案,主要是 DpapiProtectedConfigurationProvider (Specify a Protected Configuration Provider)。

也可以通过编程方式保护配置 (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

【讨论】:

    猜你喜欢
    • 2012-06-18
    • 2010-12-14
    • 2011-08-19
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多