【发布时间】:2011-05-18 19:47:10
【问题描述】:
在 wpf (c#) 中创建 app.config
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<clear />
<add name="Name"
providerName="MySql.Data"
connectionString="Server=.net;Uid=;Pwd=H;Database=;charset=utf8;Allow Zero Datetime=true;" />
</connectionStrings>
</configuration>
使用的代码 C#:
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
ConnectionStringsSection conStr = config.ConnectionStrings;
if (!conStr.SectionInformation.IsProtected)
{
conStr.SectionInformation.ProtectSection("RSAProtectedConfigurationProvider");
conStr.SectionInformation.ForceSave = true;
config.Save();
}
else
{
foreach (ConnectionStringSettings ss in conStr.ConnectionStrings)
Console.WriteLine(ss);
Console.Read();
}
config.Save(); - 导致异常:
{"使用提供者加密部分'connectionStrings'失败 'RsaProtectedConfigurationProvider'。来自的错误消息 提供者:对象已经存在。\r\n"}
【问题讨论】:
-
@ThiefMaster:这显然是错误的。
-
@ThiefMaster,我是从论坛上读到的……它是怎么做到的?
-
@Jason:加密配置文件的充分理由是什么?无论如何,应用程序都需要能够对其进行解密,以便从中提取加密密钥...
-
@ThiefMaster:加密配置文件很常见。它可以保护配置文件免受意外的媒体丢失和未经授权的帐户的读取。使用 DPAPI 保护配置部分。操作配置部分的 .Net 框架类具有加密和解密内容的显式方法这一事实应该是一个重要的警告信号,表明该操作非常非常合法。
标签: c# wpf security connection-string