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


Безопасность системы навигации веб-узла ASP.NET

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

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

Система навигации веб-узла ASP.NET чаще всего используется совместно с такими элементами управления навигации как SiteMapPathSiteMapDataSource, TreeView и Menu; либо система навигации используется программными средствами — классами SiteMap и SiteMapProvider. Сведения в данном разделе описывают методы повышения безопасности средств навигации.

Предлагаемые рекомендации в отношении конфигурации и кодирования помогут повысить безопасность приложений. Но не менее важно на постоянной основе следить за тем, чтобы на веб-сервере были установлены последние обновления для системы безопасности Microsoft Windows и служб IIS, а также обновления для системы безопасности Microsoft SQL Server или другого программного обеспечения, обеспечивающего доступ к источникам данных. Дополнительные сведения см. на веб-узле Windows Update.

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

В этом разделе

Безопасность системы навигации веб-узла

Защита данных карты веб-узла

Скрытие ссылок от отдельных пользователей

API навигационной системы веб-узла

Безопасная реализация пользовательского поставщика карты веб-узла

Сообщения об ошибках и события

Антивирусные программы

Безопасность системы навигации веб-узла

Функции навигации по веб-узлу ASP.NET по умолчанию включены. Они могут быть отключены путем установки атрибута enabled для элемента siteMapfalse в файле конфигурации (Web.config). В следующем подразделе рассматриваются вопросы безопасности данных в файле Web.config, связанных с навигацией. Сведения о параметрах конфигурации навигации и их значениях по умолчанию см. в разделе Элемент siteMap (схема параметров ASP.NET).

Защита значений параметров настройки

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

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

Отображение URL-адресов

URL-адреса могут быть отображены в файле конфигурации на дружественный URL-адрес с помощью элемента Элемент urlMappings (схема параметров ASP.NET) в файле Web.config. Таким адресам ASP.NET разрешает указывать страницы только относительно местоположения приложения, например ~/filename.aspx. Другими словами, ASP.NET не разрешает использовать сопоставленные URL-адреса для указания страниц вне приложения. Это защищает от любых попыток обращений клиента поставщика услуг Интернета к страницам, которые находятся в среде сервера за пределами его приложения.

Защита данных карты веб-узла

По умолчанию сервер ASP.NET сконфигурирован так, чтобы не допускать загрузку клиентом файлов с известными расширениями, например SITEMAP. Чтобы защитить свои данные, поместите все файлы пользовательской карты веб-узла, имеющие расширение, отличное от SITEMAP, в папку App_Data и примените соответствующие списки управления доступом (ACL). Например, в Windows 2000 или Windows XP предоставьте учетной записи процесса ASP.NET доступ только для чтения. В Windows 2003 предоставьте учетной записи сетевой службы доступ только для чтения. Дополнительные сведения см. в разделе Обязательные списки управления доступом (ACL) ASP.NET.

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

Система навигации веб-узла ASP.NET не разрешает доступ к файлам вне структуры каталогов приложения. Если в карте веб-узла есть узел, ссылающийся на другой файл карты веб-узла, который расположен вне приложения, то будет создано исключение. Исключение содержит путь, указанный в узле SiteMapNode, и сообщает, что он находится вне области приложения, но не уточняет, является ли этот путь допустимым. Это помогает предотвратить использование навигационной структуры веб-узла ASP.NET для обнаружения допустимого пути на сервере.

Сведения о том, как защитить данные карты веб-узла при реализации пользовательского поставщика карты веб-узла, использующего базу данных, см. в разделе Безопасность доступа к данным.

Процесс загрузки карты веб-узла

Поставщик карты веб-узла ASP.NET по умолчанию загружает карту веб-узла в виде XML-документа и при запуске приложения кэширует карту в виде статических данных. Слишком большой файл карты веб-узла во время загрузки может занять большой объем памяти и ресурсов процессора. В среде сервера ограничьте допустимый размер карт веб-узлов, используемых пользователями при создании своих веб-узлов. Это помогает защититься от атак типа «отказ в обслуживании».

Система навигации веб-узла ASP.NET использует уведомления об изменении файлов для поддержки актуальности навигационных данных. Когда файл карты веб-узла изменяется, ASP.NET перезагружает данные карты веб-узла. Это может привести к проблемам в тех случаях, когда навигационная структура веб-узла состоит из карт дочерних веб-узлов, пользователи которых имеют доступ для записи и которые могут не понимать, что каждое внесенное ими изменение приводит к повторной загрузке данных. Проверьте, что установлен ограниченный доступ ко всем файлам карты веб-узла. Определите группы пользователей, которым разрешено обновление файлов в определенных папках и затем установите права на доступ к файлам карты веб-узла для отдельных групп пользователей.

Скрытие ссылок от отдельных пользователей

Система навигации веб-узла ASP.NET позволяет защищать отдельные элементы карты веб-узла с помощью ролей. Если требуется скрыть от некоторых пользователей часть навигационной структуры веб-узла, то можно включить фильтрацию по ролям безопасности ASP.NET. После включения фильтрации ASP.NET выполняет авторизацию URL-адреса и при необходимости контролирует права доступа к файлу, указанному в элементе карты веб-узла. ASP.NET отображает ссылку на файл только при наличии у пользователя соответствующих прав доступа. Если требуется разрешить всем пользователям видеть ссылку на файл с ограниченным доступом, присвойте атрибуту roles соответствующих элементов карты веб-узла звездочку (*) или используйте подстановочный знак, что позволит всем клиентам видеть ссылку. Дополнительные сведения см. в разделе Фильтрация карты веб-узла ASP.NET по ролям безопасности.

Включение внешних URL-адресов в карту веб-узла

В карте веб-узла можно использовать URL-адреса, указывающие за пределы приложения ASP.NET. Однако доступ к URL-адресу вне приложения не может быть проверен ASP.NET. Например, если создать элемент карты веб-узла, соответствующий https://www.microsoft.com, и разрешить фильтрацию по ролям безопасности, то эта гиперссылка не будет видна клиентам, так как ASP.NET не может проверить права доступа к внешнему URL-адресу. Если включена фильтрация по ролям безопасности и есть элементы карты веб-узла, которые соответствуют внешним URL-адресам, присвойте атрибуту roles этих элементов звездочку (*), что позволит всем клиентам видеть ссылку, даже если ASP.NET не может авторизовать доступ к внешней ссылке.

API навигационной системы веб-узла

Классы навигационной системы веб-узла доступны любому коду, выполняющемуся на компьютере. Классы навигационной системы веб-узла выполняются на уровне минимального доверия. Низкий уровень доверия требуется для загрузки данных карты веб-узла, потому что ASP.NET необходимо использовать операции файлового ввода-вывода при открытии файла карты веб-узла с помощью поставщика карты веб-узла по умолчанию — XmlSiteMapProvider. При необходимости можно разработать собственный поставщик карты веб-узла, у которого нет этого ограничения.

Дополнительные сведения см. в разделах Уровни доверия и файлы политик ASP.NET и Реализация поставщиков карт веб-узлов ASP.NET.

Безопасная реализация пользовательского поставщика карты веб-узла

При реализации пользовательского поставщика карты веб-узла убедитесь, что для этого поставщика учтены рекомендации по обеспечению безопасности. Это особенно важно при размещении на веб-сервере, где пользовательский поставщик карты веб-узла, не реализованный правильно, может допустить утечку информации или содержать небезопасные конфигурационные параметры по умолчанию. Следуйте рекомендациям, позволяющим избежать атак, например атак путем внедрения кода SQL. Также всегда следует проверять входные параметры.

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

Сообщения об ошибках и события

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

Сообщения в исключениях

Исключения, созданные системой навигации веб-узла ASP.NET, не содержат сведений, важных с точки зрения безопасности. Просмотрите и проверьте пользовательские классы в веб-приложении на предмет недопустимых входных данных и запросов с целью обеспечения того, что при возникновении исключения важные для системы безопасности сведения не будут предоставлены.

Сообщения об ошибках

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

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

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

Антивирусные программы

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

См. также

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

Защита стандартных элементов управления

Обеспечение безопасности ролей

Защита состояния сеанса

Безопасность доступа к данным

Защита членства

Общие сведения об угрозах безопасности веб-приложений

Основные методы обеспечения безопасности веб-приложений

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

Безопасность веб-приложений ASP.NET

Безопасность приложений ASP.NET в средах выполнения