Ответ 1
Вы должны сохранить строку подключения в файле конфигурации и зашифровать этот раздел. См. http://www.4guysfromrolla.com/articles/021506-1.aspx или http://msdn.microsoft.com/en-us/library/89211k9b%28VS.80%29.aspx.
Я создал приложение С# (не ASP-страницу), которое подключается к серверу sql 2005. В моем исходном коде пароль и userid для этого sql-сервера - это закодированный простой текст в ConnectionString.
SqlConnection con = new SqlConnection();
con.ConnectionString =
"Data Source=server1;"+
"Initial Catalog=mydatabase;"+
"Integrated Security=no;"+
"User ID=admin;Password=mypassword;";
con.Open();
Есть ли простой способ зашифровать пароль или целую строку соединения, что другие люди, которые разбирают мой инструмент, не могут видеть пароль?
спасибо
Вы должны сохранить строку подключения в файле конфигурации и зашифровать этот раздел. См. http://www.4guysfromrolla.com/articles/021506-1.aspx или http://msdn.microsoft.com/en-us/library/89211k9b%28VS.80%29.aspx.
Есть два способа сделать это:
1) Вы можете использовать раздел "Конфигурация безопасности" для шифрования и дешифрования строк соединения из исходного кода:
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);
}
2) Вы можете использовать Application Application Block для доступа к корпоративной библиотеке для выполнения шифрования с помощью RSAProtectedConfigurationProvider или DPAPIProtectedConfigurationProvider.
Для полного артикула перейдите к → http://msdn.microsoft.com/en-us/library/89211k9b(VS.80).aspx
Нет, вы можете только усложнить
Лучше разрешить приложению использовать специальный логин базы данных, который получил доступ только к таблицам/процедурам.
Вы можете шифровать разделы в app.config так же, как и web.config. MS называет это Защищенная конфигурация. Поскольку и зашифрованные данные, и ключ находятся на одной машине, это только усложняет, но теоретически невозможно получить данные.
вы также можете сохранить имя пользователя и пароль в реестре вместо сохранения в файле конфигурации. Прочитайте имя пользователя и пароль из реестра при попытке подключения к базе данных. Помните, что вы должны зашифровать имя пользователя и пароль во время хранения в реестре и расшифровать имя пользователя и пароль при извлечении из реестра.