Зашифровать пароль в App.config - PullRequest
25 голосов
/ 02 апреля 2011

Я хочу зашифровать пароль в строке подключения.Когда я устанавливаю соединение с БД, строка соединения открыто сохраняется в App.config, и мне нужно найти способ сохранить только пароль в зашифрованном виде.

Ответы [ 4 ]

21 голосов
/ 02 апреля 2011

Допустим, это ваша строка подключения:

<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, используя примеры отсюда: Шифрование и дешифрование строки

19 голосов
/ 02 апреля 2011

Используйте раздел конфигурации connectionStrings и зашифруйте весь раздел, а не только пароль.

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

Существуют инструкции по шифрованию разделов конфигурации на MSDN для RSA или DPAPI .

0 голосов
/ 23 февраля 2019

В дополнение к другим ответам, не лучше ли использовать файл в Source Control в качестве шаблона, просто используя dev / test зашифрованные строки подключения, чтобы он работал в dev / test.

Для рабочих (или других сред, в которых развернуто приложение), зашифрованный файл учетных данных генерируется отдельно для указанного формата шаблона, управляется / обновляется / развертывается отдельно, к нему применяются соответствующие разрешения безопасности, и никто, кроме DBA / его не видел DevOps.

0 голосов
/ 02 апреля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...