只想问一下在.Net桌面应用程序中隐藏敏感数据(ftp帐户,数据库连接字符串等)的最佳方法..任何建议请... :)
我知道将数据放入应用程序中并记住,如果应用程序将被反混淆或反编译,隐藏数据将会暴露。
我尝试使用应用程序设置
Properties.Settings.Default.MyConnectionString = theConString;
但反编译后数据仍可以显示。
请提出任何建议。
答案 0 :(得分:5)
您可以加密全部或部分app.config文件。这在保护数据库连接字符串时尤为常见。
这是关于如何做到这一点的detailed article。简而言之,这里是用于加密app.config中的连接字符串部分的代码:
static void ToggleConfigEncryption(string exeConfigName)
{
// Takes the executable file name without the
// .config extension.
try
{
// Open the configuration file and retrieve
// the connectionStrings section.
Configuration config = ConfigurationManager.
OpenExeConfiguration(exeConfigName);
ConnectionStringsSection section =
config.GetSection("connectionStrings")
as ConnectionStringsSection;
if (section.SectionInformation.IsProtected)
{
// Remove encryption.
section.SectionInformation.UnprotectSection();
}
else
{
// Encrypt the section.
section.SectionInformation.ProtectSection(
"DataProtectionConfigurationProvider");
}
// Save the current configuration.
config.Save();
Console.WriteLine("Protected={0}",
section.SectionInformation.IsProtected);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}