Шифрование строк подключения в Web.config c #

У меня есть веб-API в .NET Framework, в котором сейчас UID и пароль представлены в виде обычного текста в строках подключения. Вместо обычного текста я хочу, чтобы эти значения были зашифрованы в веб-конфигурации из-за сканирования безопасности.

Строки подключения в виде обычного текста:

<connectionStrings>
    <add name="DataConnection1" connectionString="Data Source=server1;Initial Catalog=db1;Integrated Security=True" providerName="System.Data.SqlClient" />
    <add name="DataConnection2" connectionString="Data Source=server1;Initial Catalog=db2;Integrated Security=True" providerName="System.Data.SqlClient" />
    <add name="DataConnection3" connectionString="Data Source=server2;Initial Catalog=db123;UID=usn;PWD=password@123" providerName="System.Data.SqlClient" />
</connectionStrings>

Я провел исследование относительно шифрования строк подключения. И один из способов - использовать утилиту ASPNET_REGIIS. Но из-за некоторых ограничений доступа на сервере, где развернуто приложение, я не могу использовать RsaProtectedConfigurationProvider.

Просто хотел помочь найти другие способы шифрования строк подключения веб-конфигурации.


person JacobC    schedule 10.06.2020    source источник
comment
Мы решили эту проблему с помощью встроенной аутентификации, тогда вам вообще не нужно было указывать имя пользователя / пароль в web.config. Вы просто создаете идентификатор активного каталога, который имеет права на ваши базы данных, а затем запускаете пул приложений IIS для вашего приложения под этим идентификатором. Другой способ решить эту проблему - сохранить строки подключения в реестре.   -  person dcp    schedule 10.06.2020


Ответы (1)


Вам не нужно использовать RsaProtectedConfigurationProvider. Есть несколько альтернатив, в основном DpapiProtectedConfigurationProvider (Укажите поставщика защищенной конфигурации).

Также можно программно защитить конфигурацию (ProtectSection):

Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
ConfigurationSection connectionStrings = config.GetSection("connectionStrings");
section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");
config.Save(ConfigurationSaveMode.Full);

Если у вас возникли проблемы с использованием * .ProtectedConfigurationProvider с правами администратора, посмотрите здесь: шифрование Web.config от имени обычного пользователя

person Ritzelprimpf    schedule 16.06.2020