Как я могу скрыть свой пароль в моей строке С# Connection?
У меня есть следующая строка подключения:
Data Source=Paul-HP\MYDB;Initial Catalog=MyMSDBSQL;Persist Security Info=True;User ID=sa;Password=password
(.NET webservice)
Это, очевидно, можно просмотреть, просто открыв файл app.config и посмотрев настройки конфигурации.
Мне нужно, чтобы хакер не смог увидеть пароль. Но в то же время оставьте его настраиваемым, чтобы его можно было изменить при развертывании в другой базе данных.
Ответы
Ответ 1
У вас есть несколько вариантов - те, о которых я знаю (в порядке предпочтения):
Так, например, строка подключения может выглядеть так:
Data Source=Paul-HP\MYDB;Initial Catalog=MyMSDBSQL;Persist Security Info=True;User ID={0};Password={1}
Я бы выбрал вариант 1, если это невозможно, то вариант 2. Я уже упомянул вариант 3.
Вы читали Защиту информации о подключении (ADO.NET)?
Ответ 2
Прежде всего, не используйте учетную запись "SA". Он оставляет вашу базу данных открытой, если кто-то получает пароль. Используйте специальную учетную запись, которая разрешена только для выполнения операций CRUD в конкретной базе данных.
Единственный способ получить web.config
- взломать ваш сервер. И если они это сделали, вы все равно ввернуты.
Ответ 3
Вероятно, проще всего зашифровать строки подключения в файле web.config или app.config
См. Как: Шифровать разделы конфигурации в ASP.NET 2.0 с помощью DPAPI
Ответ 4
Вы можете зашифровать строку соединения, а затем, когда вы получите доступ к строке подключения, расшифруйте ее. Это не является доказательством дурака, хотя, поскольку вы застряли в проблеме того, где хранить ключ, чтобы расшифровать строку соединения!
Ответ 5
Я предлагаю en/decrypting строку подключения. Поэтому строка подключения должна быть установлена вручную.
Для шифрования взгляните на:
http://dotnet-snippets.de/dns/encrypt-and-decrypt-strings-SID205.aspx
Для пользовательских настроек взгляните на:
http://msdn.microsoft.com/en-us/library/8eyb2ct1.aspx
Замените зашифрованный верным во время выполнения:
public static void SetAppSettingValue(string Key, string Value)
{
System.Configuration.Configuration config == ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
// Add an Application Setting.
config.AppSettings.Settings[Key].Value = Value;
// Save the changes in App.config file.
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
}