Шифрование настроек приложения в web.config

Я разрабатываю веб-приложение, которое требует, чтобы имя пользователя и пароль были сохранены в web.Config, это также относится к некоторым URL-адресам, которые будут запрашиваться самим веб-приложением, а не клиентом.

Я знаю, что инфраструктура .Net не позволит использовать файл web.config, однако я все же считаю, что его плохая практика оставляет эту информацию в виде простого текста.

Все, что я прочитал до сих пор, требует от меня использования командной строки или сохранения значений в реестре сервера. У меня есть доступ к ни одному из них, поскольку хост подключен к сети, и у меня есть только доступ к FTP и панели управления (рулем).

Кто-нибудь может рекомендовать любую хорошую, бесплатную библиотеку шифрования или методы, которые я могу использовать? Я бы предпочел не развивать свой собственный!

Спасибо за отзывы до сих пор ребята, но я не могу выдавать команды и не могу редактировать реестр. Его придется использовать для шифрования util/helper, но просто интересно, какой из них!

Ответы

Ответ 1

EDIT:
Если вы не можете использовать утилиту asp, вы можете зашифровать файл конфигурации с помощью метода SectionInformation.ProtectSection.

Пример кода:

Шифрование строк подключения внутри Web.config в ASP.Net 2.0

Ответ 3

Хотя на первый взгляд это кажется простым, есть пара препятствий, с которыми я столкнулся.

Поэтому я предоставляю шаги, которые отлично подходят для меня (чтобы зашифровать раздел appSettings) с использованием криптовального провайдера по умолчанию:

Шифрование разделов в файле web.config:

  1. Откройте панель команд администратора (запустите ее как администратор!). Командная строка будет на C: что предполагается для следующих шагов.
    Далее предполагается, что приложение развернуто на D:\Apps\myApp - замените это на путь, который вы используете на шаге 3.
  2. cd "C:\Windows\Microsoft.NET\Framework64\v4.0.30319", на 32 - битных системах Windows, использовать Framework вместо Framework64
  3. cd/D "D:\Apps\myApp"
    Примечание. Переключатель /D автоматически изменит диск, если он отличается от вашего текущего диска. Здесь он изменит путь и диск, поэтому текущий каталог будет D:\Apps\myApp.
  4. c:aspnet_regiis -pef appConfig.

Вы должны увидеть это сообщение:

Microsoft (R) ASP.NET RegIIS версия 4.0.30319.0 Утилита администрирования для установки и удаления ASP.NET на локальном компьютере. Авторское право (C) Корпорация Microsoft. Все права защищены. Шифрование раздела конфигурации... Преуспеть!

Вы также можете расшифровать разделы в файле web.config: это те же шаги, но с опцией -pdf вместо -pef для aspnet_regiis.

Также можно зашифровать другие разделы вашего web.config, например, вы можете зашифровать строку строк подключения через:

aspnet_regiis -pe "connectionStrings" -app "/SampleApplication"

Более подробную информацию об этом можно найти здесь.


Примечание. Шифрование выше прозрачно для вашего веб-приложения, т.е. Ваше веб-приложение не распознает, что настройки зашифрованы.
Вы также можете использовать непрозрачное шифрование, например, с помощью Microsoft DPAPI или с помощью AES вместе с классом AES Framework.
Как это делается с DPAPI, описанным fooobar.com/info/528263/.... DPAPI работает очень похоже на то, что он использует ключи учетных данных машины или пользователя. Как правило, непрозрачное шифрование дает вам больше контроля, например, вы можете добавить SALT, или вы можете использовать ключ на основе пользовательской кодовой фразы. Если вы хотите узнать больше о том, как сгенерировать ключ от ключевой фразы, посмотрите здесь.