c# - 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。
只是想帮助找出一些其他方法来加密网络配置的连接字符串。
解决方案
您不必使用 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
推荐阅读
- systemd - Systemd 服务未将标准输出写入 jounald
- javascript - HTML - JS - 如果选择了 instagram 并且打开了文本框,则必须填充文本框
- javascript - 如何通过谷歌脚本中的数据选择特定城市
- c++ - 使用 IBM Rhapsody 的 C++ 移动构造函数
- kubernetes - 哪些 Kubernetes 组件实际上使用了监控数据?
- c# - 从网站中获取段落标签中的所有标签数据
- android - 通过服务器传递 admob-click 以避免无效流量是否很好?
- sql - SQL 过滤来自连接的多个匹配项
- node.js - NodeJS:如何在不暴露证书内容的情况下安全地提供服务
- github - 没有标签的预提交挂钩?