Я хочу зашифровать пароль в строке подключения. Когда я подключаюсь к БД, строка подключения открыто хранится в App.config, и мне нужно найти способ сохранить только пароль в зашифрованном виде.
Шифровать пароль в App.config
Ответ 1
Предположим, что это ваша строка подключения:
<connectionStrings>
<add name="cs" connectionString="Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=XXSDFASFDKSFJDKLJFDWERIODFSDFHSDJHKJNFJKSD;"/>
</connectionStrings>
Затем вы можете сделать что-то вроде этого:
string myCs = System.Configuration.ConfigurationManager.ConnectionStrings["cs"].ConnectionString;
System.Data.SqlClient.SqlConnectionStringBuilder csb = new System.Data.SqlClient.SqlConnectionStringBuilder(myCs);
csb.Password = EncDecHelper.Decrypt(csb.Password);
myCs = csb.ToString();
Вы можете написать EncDecHelper.Decrypt
с помощью примеров отсюда: Шифровать и расшифровывать строку
Ответ 2
Используйте раздел connectionStrings
и зашифруйте весь раздел - вместо пароля.
Это безопаснее, так как ваш конфигуратор приложения больше не будет иметь имена серверов и имена пользователей в текстовом формате.
Существуют инструкции для шифрования разделов конфигурации на MSDN для RSA или DPAPI.
Ответ 3
Может быть, расшифровать строку подключения из вашей конфигурации до загрузки приложения.