Зашифровать пароль в App.config
Я хочу зашифровать пароль в строке подключения. Когда я устанавливаю соединение с БД, строка соединения открыто сохраняется в App.config, и мне нужно найти способ сохранить только пароль в зашифрованном виде.
3 ответа
Допустим, это ваша строка подключения:
<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
используя примеры отсюда: зашифровать и расшифровать строку
Использовать connectionStrings
Конфигурирование раздела и шифрование всего раздела - вместо просто пароля.
Это безопаснее, так как в конфигурации вашего приложения больше не будет имен серверов и пользователей в виде обычного текста.
Существуют инструкции по шифрованию разделов конфигурации на MSDN для RSA или DPAPI.
В дополнение к другим ответам, не лучше ли использовать файл в Source Control в качестве шаблона, просто используя dev / test зашифрованные строки подключения, чтобы он работал в dev/test.
Для рабочей среды (или других сред, в которых развернуто приложение) зашифрованный файл учетных данных создается отдельно в указанном формате шаблона, управляется / обновляется / развертывается отдельно, к нему применяются соответствующие разрешения безопасности, никогда не замечаемые кем-либо, кроме DBA/DevOps.
Может быть, расшифровать строку подключения из вашей конфигурации до загрузки приложения.