Поделиться через


Защита файлов описания обозревателей

Обновлен: Ноябрь 2007

Файлы описания обозревателей (файлы BROWSER) содержат сведения о возможностях классов обозревателей (например, Internet Explorer) и отдельных обозревателей (например, Internet Explorer 6.0). Во время выполнения ASP.NET использует сведения из файлов BROWSER, чтобы определить, какой обозреватель отправил запрос, каковы его возможности и как осуществлять отрисовку разметки для этого обозревателя. Дополнительные сведения см. в разделе Схема файла определения веб-обозревателя (элемент browsers).

Более подробные советы и рекомендации по написанию безопасного кода и защите приложений приведены в книге «Защищенный код» Майкла Ховарда и Дэвида Леблана, а также на веб-узле Шаблоны и методики Майкрософт (на английском языке).

ms228049.alert_note(ru-ru,VS.90).gifПримечание.

Файлы описания обозревателей появились в платформе .NET Framework версии 2.0. В более ранних версиях платформы .NET Framework для описания определений обозревателей в файлах конфигурации использовался элемент browserCaps.

Безопасность файлов описания обозревателей

Для использования любых функций работы с возможностями обозревателей, включая классы платформы .NET Framework и файлы описания обозревателей, необходимо частичное доверие на уровне приложения и полное доверие на глобальном уровне. Глобальная сборка описания обозревателей подписывается уникальным для компьютера ключом перед помещением в глобальный кэш сборок; изменять ее нельзя. Файлы описания обозревателей, расположенные в каталоге %SystemRoot%\Microsoft.NET\Framework\версия\CONFIG\Browsers, защищены списками управления доступом (ACL); для их изменения необходимы права администратора.

Каталоги файлов описания обозревателей

В глобальном каталоге Browser и подкаталогах уровня приложения App_Browsers должны находиться только файлы с расширением BROWSER. Функция работы с возможностями обозревателей ASP.NET компилирует только файлы с расширением BROWSER. Помимо этого, ASP.NET защищает файлы в этих каталогах от передачи веб-сервером и от доступа из кода в других приложениях.

Списки управления доступом файлов описания обозревателей

В следующей таблице перечислены списки ACL, устанавливаемые по умолчанию для файлов BROWSER, расположенных в каталоге %SystemRoot%\Microsoft.NET\Framework\версия\CONFIG\Browsers. Эти списки также устанавливаются для самого каталога, но при этом в них включаются разрешения на изменение для группы «Создатель-владелец». Каталог доступен только для чтения.

Учетная запись Windows

Разрешения

Администраторы

Полный доступ

Учетная запись компьютера ASP.NET (<сервер>\ASPNET)

Чтение и выполнение

Создатель-владелец

Полный доступ

IIS_WPG (<сервер>\IIS_WPG)

Чтение и выполнение

LOCAL SERVICE

Чтение и выполнение

NETWORK SERVICE

Чтение и выполнение

Опытные пользователи (<сервер>\Power Users)

Изменение

SYSTEM

Полный доступ

Пользователи (<сервер>\Users)

Чтение и выполнение

В следующей таблице перечислены списки ACL, которые должны устанавливаться для файлов BROWSER уровня приложения в подкаталоге App_Browsers.

Учетная запись Windows

Разрешения

Администраторы

Полный доступ

IIS_WPG (<сервер>\IIS_WPG)

Чтение и выполнение

ИНТЕРАКТИВНЫЕ

Чтение

Гостевая учетная запись Интернета (<сервер>\IUSR_<сервер>)

Чтение

СЕТЬ

Чтение

NETWORK SERVICE

Чтение

SYSTEM

Полный доступ

Пользователи (<сервер>\Users)

Чтение и выполнение

Учетная запись Средство администрирования веб-узла ASP.NET

Особые

Добавление файлов описания обозревателей

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

  • Атрибут markupTextWriterType элемента controlAdapters.

  • Атрибут value элемента capability.

  • Атрибуты controlType и adapterType элемента adapter.

Дополнительные сведения о допустимых элементах и атрибутах атрибутами см. в разделе Схема файла определения веб-обозревателя (элемент browsers).

Изменение файлов описания обозревателей

При добавлении новых файлов описания обозревателей в глобальный каталог или изменении глобальных файлов описания обозревателей соответствующие изменения не вступят в силу до тех пор, пока не будет выполнена ручная перекомпиляция коллекции возможностей обозревателей с помощью инструмента Aspnet_regbrowsers.exe, находящегося в папке %SystemRoot%\Microsoft.NET\Framework\версия, или же не будет выполнена программная перекомпиляция с помощью класса BrowserCapabilitiesCodeGenerator.

Тем не менее, при изменениях описаний обозревателей на уровне приложений перекомпиляция не требуется. Изменения в этих описаниях перекомпилируются и заново применяются динамически.

Защита файлов описания обозревателей в совместно используемой среде размещения

В совместно используемой среде размещения злонамеренные пользователи потенциально могут изменять параметры в файлах описания обозревателей путем прямого изменения файлов описания обозревателей, изменения с помощью интерфейсов API настройки, а также с помощью других конфигурационных и административных инструментов. Чтобы устранить эту угрозу, необходимо использовать для файлов описания обозревателей строгие списки ACL. Содержимое каталогов файлов описания обозревателей участвует в компиляции, поэтому их следует защищать так же, как и любые другие каталоги кода в приложении. Если администратор размещения не позволяет пользователю добавлять код в приложение, то он также должен запретить пользователю добавлять файлы описания обозревателей.

Удержание файловой блокировки на файл описания обозревателей

К блокировке файла описания обозревателей могут привести только неоднократные попытки сохранения файла описания обозревателей или создания дескриптора файла. Злонамеренный пользователь может попытаться заблокировать файлы описания обозревателей в каталоге %SystemRoot%\Microsoft.NET\Framework\версия\CONFIG\Browsers. Тем не менее, для блокировки файла описания обозревателей требуется полное доверие, которое отключено в ASP.NET по умолчанию.

Использование интерфейсов API настройки для чтения произвольных файлов

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

Кэширование возможностей обозревателей

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

Злонамеренный клиент может попытаться переполнить веб-сервер запросами, в каждом из которых используется новый заголовок, чтобы система ASP.NET создавала и кэшировала объекты возможностей обозревателя для каждого запроса, что, в свою очередь, может привести к атаке типа «отказ в обслуживании». Чтобы устранить эту угрозу, настройте атрибут userAgentCacheKeyLength элемента Элемент browserCaps (схема параметров ASP.NET) в файле Machine.config или Web.config. Этот элемент определяет длину (в знаках), используемую в качестве ключа для определения кэшированных объектов возможностей во внутреннем кэше. Значение по умолчанию — 64. Это значение можно уменьшить, чтобы повысить вероятность обнаружения подходящего обозревателя в кэше и снизить тем самым нагрузку на кэш.

Исключения

Чтобы предотвратить предоставление конфиденциальных сведений нежелательным источникам, настройте приложение так, чтобы оно не отображало подробные сообщения об ошибках или отображало подробные сообщения об ошибках только в том случае, если клиентом является сам веб-сервер. Дополнительные сведения см. в разделе Элемент customErrors (схема параметров ASP.NET).

Журнал событий

Если сервер работает под управлением Windows Server 2003, то можно повысить безопасность приложения путем защиты журнала событий и установки параметров, касающихся размера, политики хранения и других функций журнала событий, чтобы помочь предотвратить косвенные атаки типа «отказ в обслуживании». Для получения дополнительных сведений о настройке журналов событий выполните в центре справки и поддержки Windows поиск по словосочетанию «просмотр событий» («Event Viewer»).

См. также

Задачи

Практическое руководство. Определение типов обозревателей на веб-страницах ASP.NET

Основные понятия

Серверные веб-элементы управления ASP.NET и возможности обозревателей

Защита файлов описания обозревателей

Сценарии конфигурации ASP.NET

Общие сведения о фильтрации устройств в ASP.NET

Общие сведения об архитектуре адаптивной функции элемента управления

Общие сведения о веб-разработке ASP.NET для мобильных устройств

Настройка обеспечения безопасности ASP.NET

Ссылки

Схема файла определения веб-обозревателя (элемент browsers)

Другие ресурсы

Защита веб-узлов ASP.NET