encryptionapp.config文件
我有一个app.config文件,我需要与我的应用程序分发。 它是由于我添加的ASMX Web服务的服务引用而创build的。
如果这个文件被修改/查看,这不是一个大问题,但我仍然想要使其安全。 我已经检查了configuration的哈希,并确保它是有效的,但我仍然想要一个额外的保护层。
这是我的configuration: http : //pastie.org/private/zjdzadnfwrjvwkmlbdsqw
那么有没有什么我可以encryption或任何东西?
您无法encryption整个<system.serviceModel>
– 这是一个configuration节组,它包含configuration节。
aspnet_regiis
只会encryptionconfiguration部分 – 所以你需要select性地encryption你需要的部分,如下所示:
cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 aspnet_regiis.exe -pef "system.serviceModel/bindings" . aspnet_regiis.exe -pef "system.serviceModel/services" .
等等
有了这个,你可以很容易地encryption你所需要的东西 – 什么不是太重要,可以留在明文中。
警告之词:因为它是aspnet_regiis
,它预计会处理一个web.config
文件 – 将你的app.config
复制到一个位置,并将其称为web.config
,encryption你的部分,并将这些encryption的部分复制回你自己的app.config
。
或者写你自己的configuration部分encryption器/解密器 – 这只是几行代码! 或者使用我的 – 我写了一个小的ConfigSectionCrypt
实用程序,来抓住它的我的OneDrive – 完整的源代码(C#.NET 3.5 – Visual Studio 2008)。 它允许您从任何configuration文件encryption和解密部分 – 只需在命令行上指定文件名即可。
您可以encryptionApp.Config或Web.Config的各个部分,还有一大堆博客条目详细说明了这一点:
http://www.codeproject.com/KB/dotnet/EncryptingTheAppConfig.aspx
http://weblogs.asp.net/scottgu/archive/2006/01/09/434893.aspx
http://msdn.microsoft.com/en-us/library/dtkwfdky.aspx
http://odetocode.com/blogs/scott/archive/2006/01/08/encrypting-custom-configuration-sections.aspx
这是MSDN版本: http : //msdn.microsoft.com/en-us/library/89211k9b%28VS.80%29.aspx
这里是一个如何通过代码encryption: http : //davidhayden.com/blog/dave/archive/2006/03/14/2883.aspx
我使用以下来encryptionweb.config中的连接string ,为什么不用自己的。 我不确定。
encryption:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pef "connectionStrings" "\myWebSitePath"
解密:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pdf "connectionStrings" "\myWebsitePath"
把它们放在bat文件中,这样你就可以进行encryption或解密。
那么程序在运行时就会读取这个文件,所以修改这个文件可能是一个坏主意,你可以在每一行添加校验和以确保它在你的应用程序中检查是有效的,或者检查自上次运行以来的修改。 说实话,我从来没有听说过encryption一个app.config。
如果这个文件被修改/查看,这不是一个大问题。
在这种情况下,什么是安全?
您可以用SectionInformation.ProtectSection以编程方式encryptionconfiguration文件的各个部分。
您必须在您的项目中设置对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();