Подтвердить что ты не робот

Hows предотвращает появление паролей и другой важной информации в дампе ASP.NET?

Как предотвратить пароли и другие конфиденциальные данные, отправленные и полученные с веб-страниц ASP.NET в файлах дампа IIS/ASP.NET?

Шаги по воспроизведению

  • Используя Visual Studio 2010, создайте приложение интрасети ASP.NET MVC 3.
  • Настройте его на использование IIS 7.5.
  • Запустите его и зарегистрируйте учетную запись (скажем, bob123 как пользователь и Pa ​​$$ w0Rd в качестве пароля. Я предполагаю, что база данных SQL Express создана и сайт полностью работоспособен.
  • Используя диспетчер задач, щелкните правой кнопкой мыши процесс w3wp и создайте дамп.
  • Откройте дамп в редакторе, способном отображать его содержимое как шестнадцатеричное, например, SlickEdit.
  • Найдите "Pa $$ 0Rd" и "Pa% 24% 24w0Rd" в шестнадцатеричном дампе. Вы должны иметь возможность найти несколько копий, хранящихся в виде ASCII, Unicode или закодированных.

Обратите внимание, что не имеет значения, используете ли вы HTTPS, потому что он шифрует только сообщение. ASP.NET хранит данные в ящике в памяти или на диске.

Проблема

Общей мудростью является шифрование конфиденциальных данных, а не сохранение в ясности. Однако сотрудник может получить дамп приложения IIS/ASP.NET и обнаружить пароли и другие конфиденциальные данные пользователей, поскольку эта информация не зашифрована и не используется память ASP.NET после использования.

Это ставит их под угрозу просто потому, что они имеют к нему доступ. Дамп иногда предоставляется партнерам (например, Microsoft), чтобы помочь им диагностировать проблемы в своем коде. Это необходимая часть диагностики некоторых действительно сложных проблем в одном приложении.

Вещи, которые я посмотрел на

  • Используйте SecureString для паролей и других конфиденциальных данных. Однако поставщик членства ASP.NET наряду с другими платформами, такими как WCF, часто принимает пароли как System.String, что означает, что эти копии все равно будут находиться в дампе.
  • Посмотрел, есть ли что-нибудь в каркасе, чтобы очистить копию System.String, когда она больше не используется. Я ничего не мог найти.
  • Исследуется, можно ли обнулить память, используемую для запросов и ответов, после того, как IIS будет с ней работать, но я ничего не смог найти.
  • Я исследовал, что можно шифровать файлы, которые получает IIS (как HttpPostFile), чтобы они не сохранялись в ящике. Мы можем получать конфиденциальные документы, и каждый шаг делается для шифрования и защиты их на сервере. Тем не менее, кто-то может извлечь их в ящике с дампа IIS.

То, что я надеялся, - это сообщить IIS/ASP.NET, что конкретный запрос/ответ содержит конфиденциальные данные и что IIS/ASP.NET очистит память, когда она будет выполнена с ее помощью.

4b9b3361

Ответ 1

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

Вам будет удобно передавать ваши базы данных/параметры конфигурации третьим лицам? если нет, то вы, вероятно, тоже не должны передавать дамп файлы. (Имхо)

Ответ 2

Я знаю, что это не отвечает на вопрос напрямую, но почему бы не взглянуть на эту проблему по-другому.

Вы можете легко собрать несколько javascript, чтобы сделать хеширующую клиентскую сторону. Я бы совпадал с паролем с чем-то случайным, например, с направляющим, который отправляется сервером и действителен только для одного использования. Обмен данными больше не будет содержать пароль, и хэш может быть легко сравним с сервером. Это было бы справедливо только для сеанса, поэтому кто-то, смотрящий на данные дампа, не мог использовать хеш для "аутентификации" в будущем.

На стороне файла, как эти файлы загружаются? непосредственно с веб-страницы? Существует довольно много библиотек javascript, которые выполняют шифрование (blowfish), и я определенно использовал бы эту опцию при отправке конфиденциального файла. У него есть ограничение скорости, но вы можете быть уверены, что данные в безопасности.