我曾尝试使用不同的ProtectionProviders
加密网络配置,但这些方法无法完全填充安全性。因为我可以轻松地从其他应用程序解密文件:
我用于加密的方法:
public void EncryptConnString()
{
Configuration confg = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
ConfigurationSection confStrSect = confg.GetSection(section);
if (confStrSect != null)
{
confStrSect.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");
confStrSect.SectionInformation.ForceSave = true;
confg.Save(ConfigurationSaveMode.Full);
}
}
如果我将encrypted appSettings
复制到另一个应用程序并调用该方法进行解密。这将给出原始数据,如果我将加密的配置文件与任何其他应用程序连接并调用解密方法,它将很容易解密。
这意味着;如果任何人都可以轻松访问配置文件 价值,通过解密。
所以我的问题就是这样;如何使用密码加密web.config
?或者提供应用程序级加密(限制其他应用程序解密文件)。
用于解密的方法:
public void DecryptConnString()
{
Configuration confg = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
ConfigurationSection confStrSect = confg.GetSection(section);
if (confStrSect != null)
{
confStrSect.SectionInformation.UnprotectSection();
confStrSect.SectionInformation.ForceSave = true;
confg.Save(ConfigurationSaveMode.Full);
}
}
我曾尝试使用以下ProtectionProviders
:
注意:我必须以编程方式执行此操作,以便
aspnet_regiis
无法帮助我