我有一个app.config文件,我需要与我的应用程序一起分发.它是由于我添加的ASMX Web服务的服务引用而创建的.
如果修改/查看此文件并不是一件大事,但我仍然希望使其安全.我已经检查了配置的哈希,并确保它是有效的,但我仍然想要一个额外的保护层.
这是我的配置:http://pastie.org/private/zjdzadnfwrjvwkmlbdsqw
那么我有什么可以加密的东西吗?
mar*_*c_s 41
您无法加密整个<system.serviceModel>- 它是一个配置节组,其中包含配置节.
这aspnet_regiis只会加密配置部分 - 所以你需要有选择地加密你需要的那些部分,如下所示:
cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
aspnet_regiis.exe -pef "system.serviceModel/bindings" .
aspnet_regiis.exe -pef "system.serviceModel/services" .
Run Code Online (Sandbox Code Playgroud)
等等
有了这个,您可以轻松加密您需要的东西 - 不太重要的东西,可以保留明文.
警告:因为它是aspnet_regiis,它希望处理web.config文件 - 将您复制app.config到一个位置并调用它web.config,加密您的部分,并将这些加密的部分复制回您自己的部分app.config.
或者编写自己的配置部分encrypter/decrypter - 它只是几行代码!或者使用我的 - 我写了一个小ConfigSectionCrypt实用程序,从我的OneDrive中取出它- 使用完整源代码(C# - .NET 3.5 - Visual Studio 2008).它允许您从任何配置文件加密和解密部分 - 只需在命令行中指定文件名即可.
小智 5
您必须在项目中设置对 System.Configuration.dll 的引用才能运行代码。
ExeConfigurationFileMap configFileMap = new ExeConfigurationFileMap();
configFileMap.ExeConfigFilename = exeConfigName;
System.Configuration.Configuration myConfig = ConfigurationManager.OpenMappedExeConfiguration(configFileMap, ConfigurationUserLevel.None);
ConnectionStringsSection section = myConfig.GetSection("connectionStrings") as ConnectionStringsSection;
if (section.SectionInformation.IsProtected)
{
// Remove encryption.
section.SectionInformation.UnprotectSection();
}
else
{
// Encrypt the section.
section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");
}
myConfig.Save();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
46535 次 |
| 最近记录: |