Зашифровать пароль в 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.

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

Другие вопросы по тегам