Зашифровать строку SQL connectionstring С#

Вопрос:Я создал приложение С# (не 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(); Есть ли простой способ зашифровать пароль или целую строку соединения,

Вопрос:

Я создал приложение С# (не 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();

Есть ли простой способ зашифровать пароль или целую строку соединения, что другие люди, которые разбирают мой инструмент, не могут видеть пароль?

спасибо

Ответ №1

Вы должны сохранить строку подключения в файле конфигурации и зашифровать этот раздел. См. http://www.4guysfromrolla.com/articles/021506-1.aspx или http://msdn.microsoft.com/en-us/library/89211k9b%28VS.80%29.aspx.

Ответ №2

Есть два способа сделать это:

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

Ответ №3

Нет, вы можете только усложнить

Лучше разрешить приложению использовать специальный логин базы данных, который получил доступ только к таблицам/процедурам.

Ответ №4

Вы можете шифровать разделы в app.config так же, как и web.config. MS называет это Защищенная конфигурация. Поскольку и зашифрованные данные, и ключ находятся на одной машине, это только усложняет, но теоретически невозможно получить данные.

Ответ №5

вы также можете сохранить имя пользователя и пароль в реестре вместо сохранения в файле конфигурации. Прочитайте имя пользователя и пароль из реестра при попытке подключения к базе данных. Помните, что вы должны зашифровать имя пользователя и пароль во время хранения в реестре и расшифровать имя пользователя и пароль при извлечении из реестра.

Оцените статью
Добавить комментарий