Общие сведения о безопасности в Windows Forms
Обновлен: Ноябрь 2007
До выпуска .NET Framework весь код, выполнявшийся на компьютере пользователя, имел те же права и разрешения на доступ к ресурсам, которыми обладал пользователь компьютера. Например, если пользователю был разрешен доступ к файловой системе, то программа тоже получала доступ к файловой системе, а также, если пользователю был разрешен доступ к базе данных, то и программа также получала доступ к этой базе данных. Наличие таких прав или разрешений может быть допустимо для кода в исполняемых файлах, которые пользователь собственноручно установил на локальном компьютере, но оно неприемлемо в тех случаях, когда речь идет о потенциально вредоносном коде, поступившем из Интернета или локальной интрасети. Такой код не должен получать доступ к ресурсам компьютера пользователя без его разрешения.
В среде .NET Framework представлена инфраструктура, которая называется управлением доступом для кода. Она позволяет разграничивать права и разрешения, которыми обладает пользователь и код. По умолчанию код, поступающий из Интернета или интрасети, может выполняться только в режиме частичного доверия. В режиме частичного доверия приложение подвергается ряду ограничений: так, например, приложению отказано в доступе к локальным жестким дискам и оно не может запускать неуправляемый код. .NET Framework управляет ресурсами, к которым код может получить доступ, в зависимости от идентификатора этого кода (то есть его происхождения, имеет ли он Сборки со строгими именами, сертификат и т.п.).
Технология ClickOnce, которая используется для развертывания приложений Windows Forms, помогает упростить разработку приложений, работающих в среде с частичным доверием, с полным доверием или с частичным доверием при более высоком уровне разрешений. ClickOnce обеспечивает такие возможности, как повышение уровня разрешений и развертывание надежных приложений, позволяющие приложению запросить полное доверие или повышенный уровень разрешений у локального пользователя подобающим образом.
Общее представление о безопасности в платформе .NET Framework
Управление доступом для кода позволяет считать код надежным в той или иной степени, в зависимости от происхождения кода и других аспектов его удостоверения. Дополнительные сведения о данных, на основании которых среда CLR определяет политику безопасности, см. в разделе Свидетельство. Это помогает защитить компьютер от вредоносного кода, а надежный код — от умышленного или случайного нарушения безопасности. Управление доступом для кода также позволяет контролировать действия, которые могут приложения выполнять, так как можно указать только те разрешения, которые необходимы для работы приложения. Управление доступом для кода влияет на весь управляемый код, который предназначен для среды CLR, даже если этот код не произвел ни одной проверки разрешений, предоставляемых управлением доступом для кода. Дополнительные сведения о безопасности в .NET Framework см. в разделах Основные понятия безопасности и Основы управления доступом для кода.
Если пользователь запустит исполняемый файл Windows Forms непосредственно с веб-сервера или из общей папки, то степень доверия, предоставленная приложению, зависит от того, где размещается код и как он запущен. При запуске приложения происходит его автоматическая оценка, после которой приложение получает именованный набор разрешений от среды CLR. По умолчанию код на локальном компьютере получает набор разрешений полного доверия (Full Trust), код из локальной сети получает набор разрешений локальной интрасети (Local Intranet), а код из Интернета получает набор разрешений Интернета (Internet).
![]() |
---|
В .NET Framework версии 1.0 с пакетами обновления 1 (SP1) и 2 (SP2) код из Интернета получает набор разрешений "Nothing". Во всех остальных выпусках .NET Framework код из Интернета получает набор разрешений "Internet". Разрешения по умолчанию, которые содержатся в этих наборах разрешений, приведены в разделе Политика безопасности по умолчанию. В зависимости от разрешений, которые получает приложение, оно либо правильно запускается, либо вызывает исключение безопасности. Многие приложения Windows Forms будут развернуты с помощью ClickOnce. Уровни безопасности по умолчанию средств, используемых для реализации развертывания ClickOnce, отличаются от тех, которые обсуждались ранее. Дополнительные сведения см. далее в этом разделе. |
Разрешения, предоставленные приложению, могут отличаться от разрешений по умолчанию, потому что политика безопасности может быть изменена. Это означает, что приложение может иметь некоторые разрешения на одном компьютере, но не иметь их на другом.
Разработка более безопасных приложений Windows Forms
Безопасность важна на всех этапах разработки приложения. Начните с ознакомления и выполнения инструкций раздела Правила написания безопасного кода.
Далее необходимо решить, будет ли приложение выполняться в режиме полного доверия или оно должно работать в режиме частичного доверия. Выполнение приложения в режиме полного доверия облегчает доступ к ресурсам на локальном компьютере, но подвергает приложение и его пользователей высокому риску нарушения безопасности, если приложение проектировалось и разрабатывалось без строгого соблюдения правил написания безопасного кода. Выполнение приложения в среде с частичным доверием облегчает разработку более безопасных приложений и сокращает риски, но требует большего планирования при реализации некоторых возможностей.
Если используется частичное доверие (т.е. наборы разрешений "Internet" или "Local Intranet"), определите, как должно вести себя приложение в этой среде. Windows Forms предоставляет более безопасные альтернативные способы реализации возможностей приложения при его работе в среде с частичным доверием. Определенные части приложения, такие как доступ к данным, могут быть разработаны и написаны по-разному для среды с частичным доверием и для среды с полным доверием. Некоторые возможности Windows Forms, такие как параметры приложений, предназначены для работы в среде с частичным доверием. Дополнительные сведения см. в разделе Общие сведения о параметрах приложений.
Если приложению требуется больше разрешений, чем позволяет среда с частичным доверием, однако предоставлять приложению разрешения полного доверия нежелательно, можно работать в режиме частичного доверия, запросив только те дополнительные разрешения, которые необходимы. Например, если требуется работать в режиме частичного доверия, но необходимо предоставить приложению доступ только для чтения к каталогу в файловой системе пользователя, можно запросить разрешение FileIOPermission только для этого каталога. При правильном применении этот подход может предоставлять расширенные функциональные возможности приложению и снизить угрозу безопасности для пользователей.
При разработке приложения, которое будет выполняться в среде с частичным доверием, отслеживайте, какие разрешения обязательны для работы приложения, а какие разрешения приложение может использовать выборочно. Когда известны все разрешения, необходимо подать декларативный запрос на разрешения на уровне приложения. Запрос разрешений уведомляет среду времени выполнения .NET Framework о необходимых разрешениях и тех разрешениях, предоставление которых не требуется. Дополнительные сведения о запросе разрешений см. в разделах Запрос разрешений и Запросы разрешений.
При запросе необязательных разрешений необходимо обработать исключения безопасности, которые могут возникнуть, если приложение выполнит действие, требующее разрешений, которые не были предоставлены. Корректная обработка исключения SecurityException гарантирует, что приложение будет продолжать работать. Приложение может использовать исключения для определения необходимости отключения той или иной возможности для пользователя. Например, приложение может отключить команду меню Сохранить, если не предоставлено соответствующее разрешение.
Иногда трудно определить, запрошены ли все необходимые разрешения. Вызов метода, который на первый взгляд выглядит вполне безобидно, может, например, обращаться к файловой системе в некоторый момент во время выполнения. Если не выполнить развертывание приложения со всеми требуемыми разрешениями, то оно может работать корректно при отладке, но отказать при развертывании. И в пакете .NET Framework 2.0 SDK и в среде Visual Studio 2005 содержатся средства для расчета разрешений, необходимых приложению: средство командной строки MT.exe и функция расчета разрешений Visual Studio, соответственно.
Дополнительные функции обеспечения безопасности Windows Forms описаны в представленных ниже разделах.
Раздел |
Описание |
---|---|
Описание доступа к файлам и данным в среде с частичным доверием. |
|
Описание доступа к возможностям печати в среде с частичным доверием. |
|
Описание способов работы с окнами с помощью буфера обмена и процедуры вызова неуправляемого кода в среде с частичным доверием. |
Развертывание приложений с соответствующими разрешениями
Наиболее распространенным средством развертывания приложений Windows Forms на клиентском компьютере является технология развертывания ClickOnce, которая описывает все компоненты, необходимые для запуска приложения. В технологии ClickOnce используются XML-файлы, называемые манифестами, для описания сборок и файлов, составляющих приложение, а также разрешений, которые требуются приложению.
В состав ClickOnce входят две технологии запроса повышенного уровня разрешений на клиентском компьютере. Обе технологии основаны на использовании сертификатов Authenticode. Сертификаты предоставляют пользователям некоторые гарантии того, что приложение поступило из надежного источника.
Эти технологии описываются в представленной ниже таблице.
Технология повышения уровня разрешений |
Описание |
---|---|
Повышение уровня разрешений |
Запрашивает пользователя с помощью диалогового окна безопасности при первом запуске приложения. Диалоговое окно Повышение разрешений информирует пользователя об издателе приложения, чтобы пользователь сделал обоснованное решение о том, следует ли предоставлять этому приложению дополнительное доверие. |
Развертывание надежных приложений |
Включает в себя однократную установку сертификата Authenticode издателя на клиентском компьютере, выполняемую системным администратором. С этого момента любые приложения, подписанные этим сертификатом, будут рассматриваться как надежные и их можно будет запускать с полным доверием на локальном компьютере без дополнительных запросов. |
Выбор технологии зависит от среды развертывания. Дополнительные сведения см. в разделе Выбор стратегии развертывания ClickOnce.
По умолчанию приложения ClickOnce, которые развертываются либо при помощи Visual Studio, либо при помощи средств пакета .NET Framework 2.0 SDK (Mage.exe и MageUI.exe), настроены для запуска на клиентском компьютере с полным доверием. При развертывании приложения с помощью частичного доверия или при использовании только некоторых дополнительных разрешений необходимо изменить это значение по умолчанию. Это можно сделать с помощью Visual Studio или при помощи средства пакета .NET Framework 2.0 SDK MageUI.exe при настройке развертывания. Дополнительные сведения об использовании средства MageUI.exe см. в разделе "Пошаговое руководство. Развертывание приложения ClickOnce из командной строки". Дополнительные сведения см. в разделах Практическое руководство. Установка пользовательских разрешений для ClickOnce-приложения и Практическое руководство. Установка пользовательских разрешений для ClickOnce-приложения и Практическое руководство. Установка пользовательских разрешений для ClickOnce-приложения.
Дополнительные сведения об аспектах безопасности технологии ClickOnce и повышении уровня разрешений см. в разделе Развертывание и безопасность ClickOnce. Дополнительные сведения о развертывании надежных приложений см. в разделе Общие сведения о развертывании доверенных приложений.
Тестирование приложения
Если приложение Windows Forms развернуто с помощью Visual Studio, можно включить отладку в среде с частичным доверием или с ограниченным набором разрешений из среды разработки. Дополнительные сведения см. в разделах Практическое руководство. Отладка ClickOnce-приложения с ограниченными разрешениями и Практическое руководство. Отладка ClickOnce-приложения с ограниченными разрешениями и Практическое руководство. Отладка ClickOnce-приложения с ограниченными разрешениями.
См. также
Основные понятия
Основы управления доступом для кода
Общие сведения о развертывании доверенных приложений
Ссылки
Средство создания и редактирования манифеста (Mage.exe)
Средство создания и редактирования манифестов, графический клиент (MageUI.exe)