Пользовательские серверные элементы управления безопасностью
Обновлен: Ноябрь 2007
Пользовательские серверные элементы управления являются способом расширить функциональность серверных веб-элементов управления ASP.NET. Следующие базовые руководства по безопасности предоставлены пользователям и разработчикам пользовательских серверных элементов управления. Дополнительные сведения о создании пользовательских серверных элементов управления см. в разделе Разработка пользовательских серверных элементов управления ASP.NET.
IDE, такой как Microsoft Visual Studio 2005 упрощает как использование, так и разработку пользовательских элементов управления. Однако, руководства по безопасности, представленные ниже, применяются независимо от используемого IDE.
Общие сведения о безопасности веб-приложений ASP.NET см. в разделе Безопасность веб-приложений ASP.NET.
Руководство для пользователей пользовательских серверных элементов управления
Есть несколько путей использования пользовательских серверных элементов управления в веб-приложениях, например, можно разместить несколько файлов кода прямо в каталоге вашего веб-приложения App_Code, использовать элементы управления из глобального кэша сборки, или использовать компоненты сообщества, установленного при помощи автоматического установщика, такого как установщик содержимого Visual Studio. В любом случае, следует принять меры против импортирования вредоносного кода или случайного кода, который нежелательно воздействует на ваш IDE и компоненты, размещенные на сервере.
Ниже представлены несколько руководств по безопасности для пользователя пользовательских серверных элементов управления. Этот список не претендует на полноту, но дает первоначальное представление о вопросе:
Не работайте с незнакомым кодом или кодом, влияние на безопасность которого Вы не понимаете. Для компонентов сообщества рекомендуется прочитать доступную, опубликованную о них информацию и определить, подписаны ли компоненты. Дополнительные сведения см. в разделах Практическое руководство. Упаковка компонентов, разработанных членами сообществ, для использования установщика содержимого Visual Studio и Практическое руководство. Упаковка компонентов для использования установщика содержимого Visual Studio и Практическое руководство. Упаковка компонентов для использования установщика содержимого Visual Studio.
Рассмотрите не только безопасность элемента управления во время выполнения, но также и безопасность во время конструирования. Дополнительные сведения см. в разделе Защита компонентов конструктора пользовательских элементов.
Если это возможно, работайте с пользовательскими элементами управления в строго именованных сборках и с надежными издателями. Дополнительные сведения см. в разделе Практическое руководство. Определение полного имени сборки.
Запускайте веб-приложения ASP.NET, которые включают импортируемые элементы управления только из-под учетной записи, имеющей минимальные привилегии. Дополнительные сведения о запуске обработки ASP.NET с идентификацией, имеющей минимальные разрешения, см. в разделе Настройка удостоверения процесса ASP.NET. В IDE, похожих на Visual Studio 2005 или Visual Web Developer, экспресс-выпуск, запускать приложения под обычным пользователем или под пользователем, не имеющим прав администратора бесполезно, если это административные задачи. Дополнительные сведения см. в разделах Права пользователя и Visual Studio и User Rights and Visual Studio.
Обзор безопасности операционных систем и списков элементов управления доступом Windows (ACLs) на сервере, на котором размещены пользовательские серверные элементы управления. Например, следует убедиться, что обработка ASP.NET выполняется с идентификацией, имеющей только минимальные разрешения, требуемые для запуска приложения, так что нарушения безопасности пользовательскими серверными элементами управления минимально влияют на размещенные приложения. Дополнительные сведения см. в разделе Настройка удостоверения процесса ASP.NET. Кроме того, просмотрите разрешения пользовательских серверных элементов управления и убедитесь, что они соответствуют разрешениям файлов и папок, которые идентификация веб-приложения ASP.NET должна иметь для правильного функционирования. Дополнительные сведения см. в разделе Обязательные списки управления доступом (ACL) ASP.NET.
Используйте управление доступом для кода для ограничения ресурсов, к которым веб-приложения (с пользовательскими серверными элементами управления) могут иметь доступ и привилегированных операций, которые они могут выполнять. Дополнительные сведения см. в разделе Управление доступом для кода в ASP.NET.
Используйте инструмент конфигурации .NET Framework (Mscorcfg.msc) для управления и настройки сборок в глобальном кэше сборок и для настройки политики управления доступом для кода. Т. к. Mscorcfg.msc предназначен для помощи продвинутым администраторам выполнять задачи, связанные с настройкой приложений, работайте вместе с системным администратором, чтобы определить, стоит ли это использовать в вашей ситуации. Дополнительные сведения см. в разделе Средство настройки .NET Framework (Mscorcfg.msc).
Руководство для разработчиков пользовательских серверных элементов управления
Как разработчик пользовательских элементов управления, следуйте рекомендуемым способам для обеспечения безопасности в страницах приложений ASP.NET и управляющих элементах в .NET Framework. В большинстве случаев пользователи ваших настраиваемых серверных элементов управления могут не знать всех сведений о реализации или влиянии на безопасность. Поэтому следуют планировать следование установленным соглашениям по безопасности и аккуратно вызывать все разрешения, которые требуются для функционирования ваших компонентов. Можно начать изучение с общих вопросов безопасности и решений для веб-приложений с помощью Защита веб-узлов ASP.NET, инструкции для разработчиков .NET Framework Основные понятия безопасности, и раздела, посвященного безопасности Шаблоны и практические способы для веб-узлов.
После конструирования и реализации ваших пользовательских серверных веб-элементов управления, необходимо решить вопрос о способах пересылки ваших компонентов пользователям. Существует два общих метода пересылки — в качестве сборки и в качестве компонента, разработанного членами сообщества. Если Вы решите пересылать ваши компоненты как сборку, следует подписать вашу сборку (также называемую подписью строгого имени). Подпись даст вашей сборке уникальный идентификатор, который может использоваться другой программой для идентификации и явной ссылки на него. Также есть и другие преимущества, см. более подробно в разделе Программирование с использованием сборок.
Если Вы пересылаете ваш компонент как компонент, разработанный членами сообщества, с автоматической процедурой установки, тогда следует подписать ваши компоненты криптографически. Подписывание позволяет проверить, что данные действительно исходят от конкретного лица, используя для этого уникальную цифровую подпись этого лица. Способом создания компонентов сообщества для использования с Visual Studio 2005 является Visual Studio Content Installer и создание vsi-файлов, которые могут быть подписаны. Дополнительные сведения см. в разделах Практическое руководство. Упаковка компонентов, разработанных членами сообществ, для использования установщика содержимого Visual Studio и Практическое руководство. Упаковка компонентов для использования установщика содержимого Visual Studio и Практическое руководство. Упаковка компонентов для использования установщика содержимого Visual Studio.
Ниже представлены несколько руководств по безопасности для разработчика компонентов пользовательских серверных элементов управления. Этот список не претендует на полноту, но дает первоначальное представление о вопросе:
Представьте инструкции вместе с вашими пользовательскими элементами управления о том, как их использовать и список ожидаемых ресурсов и доступов, которые им необходимы для правильного функционирования.
Цифровая подпись ваших компонентов. Если Вы решите упаковать ваши пользовательские элементы управления как сборку, подпишите вашу сборку подписью строгого имени. Дополнительные сведения см. в разделе Создание и использование сборок со строгими именами. Если используется автоматический установщик, такой как Visual Studio Content Installer, также следует подписать ваши компоненты. Дополнительные сведения см. в разделах Практическое руководство. Упаковка компонентов, разработанных членами сообществ, для использования установщика содержимого Visual Studio и Практическое руководство. Упаковка компонентов для использования установщика содержимого Visual Studio и Практическое руководство. Упаковка компонентов для использования установщика содержимого Visual Studio.
Следуйте рекомендуемым способам для исключения управления в вашем коде. Дополнительные сведения см. в разделе Глава 10 в Шаблоны и практические способы для веб-узлов, например.
Если Вы планируете разработать страницу, чтобы добавить ваши пользовательские элементы управления в визуальные элементы конструктора, перетащите их на поверхность разработки и обеспечьте доступ к их свойствам и событиям в обозревателе свойств, следуйте безопасности времени разработки в дополнение к безопасности во время выполнения. Дополнительные сведения см. в разделе Защита компонентов конструктора пользовательских элементов.
Осознание возможных угроз страницам веб-приложений и элементам управления, включая вставку кода, непреднамеренное раскрытие информации, перехват сессии, подмена идентификаторов, управление параметрами и сетевое подслушивание. Чтобы закончить, выполните анализ модели угроз для ваших компонентов перед разработкой. Дополнительные сведения см. раздел Моделирование угроз веб-приложений на Шаблоны и практические способы для веб-узлов.
См. также
Основные понятия
Защита компонентов конструктора пользовательских элементов
Другие ресурсы
Веб-узел шаблонов и рекомендаций
Создание и использование сборок со строгими именами
Программирование с использованием сборок
Безопасность веб-приложений ASP.NET
Разработка пользовательских серверных элементов управления ASP.NET