加密将重新分发的App.config文件中的部分和/或设置

GR7*_*GR7 8 security encryption app-config winforms

我正在创建一个常规的Windows应用程序,它将分发给我部门的几个用户.我需要在App.config文件中包含一些连接密码,我显然不希望最终用户只需启动记事本并查看密码.

有几篇文章指出如何加密/解密配置部分,但看起来你必须与可部署的解决方案共享/发送一些密钥.

是否有一种更简单的方法,只是加密一些设置,使它们不是用户可读的,但在重新分发程序时不需要额外的步骤或文件?非常好的是访问配置设置在.NET代码中仍然是透明的.我总是可以创建一个自定义方法来加密/加密字符串,并在我的自定义代码中解密它,但我想知道是否有更简单的东西.

任何答案或链接到如何做到这一点的文章非常感谢.谢谢

Bha*_*kar 8

如果您尝试在App.Config/Web.Config中加密连接字符串,则可以使用Configuration类执行此操作:

Configuration config = ConfigurationManager.   OpenExeConfiguration(ConfigurationUserLevel.None);
ConfigurationSection section =    config.GetSection("connectionStrings");
if (section != null)
{
    if (!section.IsReadOnly())
    {
        section.SectionInformation.ProtectSection             ("RsaProtectedConfigurationProvider");
        section.SectionInformation.ForceSave = true;
        config.Save(ConfigurationSaveMode.Full);
    }
}
Run Code Online (Sandbox Code Playgroud)

有两种方法:RsaProtectedConfigurationProviderDPAPIProtectedConfigurationProvider

请参阅 - > http://www.codeproject.com/KB/cs/Configuration_File.aspxhttp://msdn.microsoft.com/en-us/library/89211k9b(VS.80).aspx.

  • 这样的解决方案(默默无闻的“安全性”)会让您被一家合格的技术公司解雇。如果您的代码可以检索纯文本,是什么使您认为攻击者不能使用相同的代码来检索纯文本?唯一真正的解决方案是在服务器端施加安全性约束。 (2认同)