Шифрование строки подключения в web.config - PullRequest
24 голосов
/ 10 ноября 2009

Как мы можем зашифровать раздел строки подключения в файле web.config?

Ответы [ 8 ]

12 голосов
/ 14 апреля 2014

Рахул, преобразование строки из ASCII в строку base64 - это не шифрование, как предлагает ваша первая ссылка. Мы можем легко конвертировать base64 в ASCII.

Использование configsection.protectSection () с ключом RSA является надлежащим шифрованием, доступным для разделов файла Web.config.

Проверьте эту ссылку: http://www.beansoftware.com/ASP.NET-Tutorials/Encrypting-Connection-String.aspx

Обратите внимание, что мы не можем зашифровать файл Web.config в среде общего хостинга, где уровень доверия установлен на среднее доверие.

8 голосов
/ 22 мая 2015

Чтобы избежать необходимости посещать внешние ссылки, в C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 (для .NET 4 / 4.5)

aspnet_regiis.exe -pe "connectionStrings" -app "/YourWebSiteName" -prov "DataProtectionConfigurationProvider"

Чтобы расшифровать раздел connectionStrings с помощью этого инструмента, вы можете указать следующую команду в инструменте aspnet_iisreg.exe.

aspnet_regiis.exe -pd "connectionStrings" -app "/YouWebSiteName"
4 голосов
/ 10 ноября 2009
2 голосов
/ 29 июня 2017

Запустите это в команде: aspnet_regiis.exe -pef "connectionStrings" "pathToWebConfig"

или, если вы хотите, чтобы это выполнялось программно, вы можете создать процесс:

            string fileName = @"C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe";

            if (8 == IntPtr.Size
                || (!string.IsNullOrEmpty(Environment.GetEnvironmentVariable("PROCESSOR_ARCHITEW6432"))))
            fileName = @"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe";

            string arguments = $"-pef \"connectionStrings\" \"{application.Path}\"";

            using (Process process = new Process())
            {
                process.EnableRaisingEvents = true;
                process.StartInfo = new ProcessStartInfo
                {
                    FileName = exeName,
                    Arguments = arguments,
                    UseShellExecute = false,
                    RedirectStandardOutput = true,
                    RedirectStandardError = true,
                    CreateNoWindow = true
                };

                process.Start();
                processOutput.Output = process.StandardOutput.ReadToEnd();
                bool exited = process.WaitForExit(timeoutMilliseconds);
                if (exited)
                {
                    processOutput.ExitCode = process.ExitCode;
                }
            }
1 голос
/ 10 апреля 2018

Я создал утилиту в формах Windows с исходным кодом.

Скачать файл отсюда (весь проект, вы можете запустить его из папки bin): Файл

  1. Запустить исполняемый файл из папки отладки ( Запуск от имени администратора )
  2. Просмотр файла конфигурации
  3. Вы сделали

Примечание: Проверьте, существует ли эта папка на вашем компьютере:

C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \

Вот пример того, какой файл имеет Check Gist Here

1 голос
/ 13 марта 2017

Шифрование полезно для обеспечения безопасности приложения. Пожалуйста, найдите следующие шаги для шифрования web.config.

  1. Открыть командную строку с правами администратора
  2. В командной строке введите
  3. cd C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319
  4. Если ваша веб-конфигурация находится в пути к каталогу «D: \ Articles \ EncryptWebConfig», введите следующую строку для шифрования строки подключения:
  5. ASPNET_REGIIS -pef "connectionStrings" "D: \ Articles \ EncryptWebConfig

Я использовал кое-что другое для большей безопасности. В мой Web.config я добавил следующий код.

 <httpProtocol>
        <customHeaders>
            <add name="x-Frame-Option" value="Deny or SEMEORGIN" />
          <remove name="Server" />
          <remove name="X-AspNet-Version" />
          <remove name="X-AspNetMvc-Version" />
          <remove name="X-Powered-By" />              
        </customHeaders>
  </httpProtocol>
0 голосов
/ 29 января 2019

ASPNET_REGIIS, как говорят другие.

Но помните, что, учитывая прочность и требования к кодированию, RSA не является надежным и даже не очень надежным. Ломка занимает минуты.

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

Обычные текстовые пароли в файлах просто неверны. Лучше закодировать RSA. Поэтому, когда кто-то смотрит на него и не хочет взламывать его, он не видит пароль.

Тем не менее, он находится на сервере, доступном только из домена, что ограничивает число возможных злоумышленников менее 100, кому-то еще придется сначала взломать домен, и если это произойдет, подключение к серверу БД тестовой среды Наименьшая из проблем. Кроме того, из этих 100 человек только около 5 имеют права администратора, которые дают право на чистую расшифровку файла с помощью ASPNET_REGIIS.

Вы все равно должны доверять им. Для всех остальных ценность данных, которые они могут получить, намного меньше, чем работа, которую они должны были бы потратить на их получение. Не стоит и того, чтобы перестать быть сотрудником.

Кроме того, они в основном даже не знают о том, что эту вещь можно взломать. И теперь, даже если они каким-то образом узнают, они не получат простой текстовый пароль без какой-либо работы.

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