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


Общие сведения о безопасности в Windows Forms

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

Платформа .NET Framework представляет инфраструктуру, называемую безопасностью доступа к коду, которая позволяет различать разрешения или права, имеющие код от прав, которые у пользователя есть. По умолчанию код, поступающий из Интернета и интрасети, может выполняться только с частичным доверием. Частичное доверие предоставляет приложению ряд ограничений: помимо прочего, приложение ограничено доступом к локальному жесткому диску и не может выполнять неуправляемый код. Платформа .NET Framework управляет ресурсами, к которым разрешен доступ коду на основе удостоверения этого кода: откуда он поступил, имеет ли он Strong-Named сборки, подписан ли он сертификатом и т. д.

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

Общие сведения о безопасности в .NET Framework

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

Если пользователь запускает исполняемый файл Windows Forms непосредственно из веб-сервера или общей папки, степень доверия, предоставленная приложению, зависит от того, где находится код и как он запускается. При запуске приложения, оно автоматически оценивается и получает именованный набор разрешений из общей языковой среды выполнения. По умолчанию коду с локального компьютера предоставляются разрешения Full Trust, коду из локальной сети предоставляются разрешения Локальная интрасеть, а коду из Интернета предоставляются разрешения Интернет.

Заметка

В .NET Framework версии 1.0 с пакетом обновления 1 и пакетом обновления 2 группа кода зоны Интернета получает набор разрешений Nothing. Во всех остальных выпусках .NET Framework группа кода зоны Интернета получает набор разрешений Интернета.

Разрешения по умолчанию, предоставленные в каждом из этих наборов разрешений, перечислены в разделе Политика безопасности по умолчанию. В зависимости от разрешений, которые получает приложение, оно либо работает корректно, либо возникает исключение безопасности.

Многие приложения Windows Forms будут развернуты с помощью ClickOnce. Средства, используемые для создания развертывания ClickOnce, имеют разные значения по умолчанию безопасности, отличные от того, что было описано ранее. Дополнительные сведения см. в следующем обсуждении.

Фактические разрешения, предоставленные приложению, могут отличаться от значений по умолчанию, так как политика безопасности может быть изменена; это означает, что ваше приложение может иметь разрешение на одном компьютере, но не на другом.

Разработка более безопасного приложения Windows Forms

Безопасность важна во всех шагах разработки приложений. Начните с проверки и выполнения рекомендаций по безопасному написанию кода.

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

Если выбрать частичное доверие (то есть наборы разрешений интернета или локальной интрасети), определите, как ваше приложение будет вести себя в этой среде. Windows Forms предоставляет альтернативные, более безопасные способы реализации функций при использовании полунадежной среды. Некоторые части приложения, такие как доступ к данным, могут быть разработаны и написаны по-разному для сред частичного доверия и полного доверия. Некоторые функции Windows Forms, такие как параметры приложения, предназначены для работы в частичном доверии. Дополнительную информацию см. в разделе Обзор параметров приложения.

Если вашему приложению требуется больше разрешений, чем позволяет частичное доверие, но вы не хотите работать в полном доверии, вы можете работать в частичном доверии, заявив только те дополнительные разрешения, которые вам нужны. Например, если вы хотите запустить приложение с частичным доверием, но вы должны предоставить приложению доступ только для чтения к каталогу в файловой системе пользователя, вы можете запросить FileIOPermission только для этого каталога. Этот подход позволяет приложению повысить функциональные возможности и свести к минимуму риски безопасности для пользователей.

При разработке приложения, которое будет работать в частичном доверии, следите за разрешениями, которые должны выполняться приложением, и какие разрешения приложение может использовать при необходимости. Когда все разрешения известны, необходимо сделать декларативный запрос на разрешение на уровне приложения. Запрос разрешений информирует среду выполнения .NET Framework о том, какие разрешения требуются вашему приложению и какие разрешения ему не нужны. Дополнительные сведения о запросе разрешений см. в разделе Запрос разрешений.

При запросе необязательных разрешений необходимо обрабатывать исключения безопасности, которые будут созданы, если приложение выполняет действие, требующее разрешений, не предоставленных ему. Соответствующая обработка SecurityException гарантирует, что ваше приложение сможет продолжать работать. Приложение может использовать исключение, чтобы определить, должна ли функция быть отключена для пользователя. Например, приложение может отключить параметр меню "Сохранить", если требуемое разрешение на файл не предоставлено.

Иногда сложно определить, уверены ли вы, что заявили все соответствующие разрешения. Вызов метода, который выглядит невредимым на поверхности, например, может получить доступ к файловой системе в какой-то момент во время его выполнения. Если вы не развернёте приложение со всеми необходимыми разрешениями, оно может нормально работать при отладке на вашем рабочем столе, но выйти из строя после развертывания. Пакет SDK для .NET Framework 2.0 и Visual Studio 2005 содержат средства для вычисления необходимых приложений разрешений: средства командной строки MT.exe и функции вычисления разрешений Visual Studio соответственно.

В следующих разделах описаны дополнительные функции безопасности Windows Forms.

Тема Описание
- более безопасный доступ к файлам и данным в Windows Forms Описывается, как получить доступ к файлам и данным в среде частичного доверия.
- более безопасная печать в Windows Forms Описывает, как получить доступ к функциям печати в среде частичного доверия.
- дополнительные вопросы безопасности в Windows Forms Описывает выполнение операций с окном, использование буфера обмена и вызовы неуправляемого кода в среде частичного доверия.

Развертывание приложения с соответствующими разрешениями

Наиболее распространенными способами развертывания приложения Windows Forms на клиентском компьютере является технология развертывания ClickOnce, описывающая все компоненты, необходимые для запуска приложения. ClickOnce использует XML-файлы, называемые манифестами, чтобы описать сборки и файлы, составляющие приложение, а также необходимые разрешения.

ClickOnce имеет две технологии для запроса повышенных разрешений на клиентском компьютере. Обе технологии используют сертификаты Authenticode. Сертификаты помогают гарантировать пользователям, что приложение пришло из надежного источника.

В следующей таблице описаны эти технологии.

Технология увеличенных прав доступа Описание
Эскалация разрешений При первом запуске вашего приложения открывается диалоговое окно безопасности для запроса пользователя. Диалоговое окно "Повышение разрешений" информирует пользователя о том, кто опубликовал приложение, чтобы пользователь смог принять осознанное решение о предоставлении ему дополнительного доверия.
Развертывание доверенных приложений Включает участие системного администратора для однократной установки сертификата Authenticode издателя на клиентском компьютере. С этого момента все приложения, подписанные сертификатом, считаются доверенными и могут работать в полном доверии на локальном компьютере без дополнительных запросов.

Выбор технологии будет зависеть от среды развертывания. Дополнительные сведения см. в разделе Выбор стратегии развертывания ClickOnce.

По умолчанию приложения ClickOnce, развернутые с помощью Visual Studio или средств sdk для .NET Framework (Mage.exe и MageUI.exe), настроены для запуска на клиентском компьютере с полным доверием. Если вы развертываете приложение с частичным доверием или используете только некоторые дополнительные разрешения, необходимо изменить это значение по умолчанию. Можно сделать это либо с помощью Visual Studio, либо инструмента .NET Framework SDK MageUI.exe при настройке развертывания. Дополнительные сведения об использовании MageUI.exeсм. в пошаговом руководстве: ручное развертывание приложения ClickOnce. См. также Практическое руководство: настройка пользовательских разрешений для приложения ClickOnce или Практическое руководство: настройка пользовательских разрешений для приложения ClickOnce.

Дополнительные сведения об аспектах безопасности ClickOnce и повышении прав доступа см. в разделе Защита приложений ClickOnce. Дополнительные сведения о развертывании доверенных приложений см. в обзоре развертывания доверенных приложений.

Тестирование приложения

Если вы развернули приложение Windows Forms с помощью Visual Studio, можно включить отладку в частичном доверии или ограниченный набор разрешений из среды разработки. См. также руководство : Как отладить приложение ClickOnce с ограниченными разрешениями.

См. также