Защита приложений ClickOnce
К приложению ClickOnce могут применяться ограничения управления доступом для кода на платформе .NET Framework, позволяющие ограничить доступ кода к защищенным ресурсам и операциям. Важно понимать влияние управления доступом для кода, чтобы писать приложения ClickOnce соответствующим образом. Для ограничения доступа приложение может использовать зоны с полным или частичным доверием, такие как Интернет и интрасеть.
Кроме того, ClickOnce использует сертификаты для проверки подлинности издателя приложения, подписи приложения и манифестов развертывания, чтобы удостовериться в том, что файлы не были изменены злоумышленником. Подписывание — это необязательный шаг, который упрощает изменение файлов приложения после создания манифестов. Без подписанных манифестов, однако, трудно гарантировать, что установщик приложения не был изменен злоумышленником (атака "злоумышленник в середине"). По этой причине рекомендуется подписывать манифесты приложений и развертываний для защиты приложений.
Зоны
Для приложений, развертываемых с помощью технологии ClickOnce, ограничен доступ к наборам разрешений и действий, которые определены в зоне безопасности. Зоны безопасности определены в Internet Explorer и берут за основу местоположение приложения. Разрешения по умолчанию, основанные на местоположении развертывания, перечисляются в следующей таблице:
Местоположение развертывания |
Зона безопасности |
---|---|
Запуск из Интернета |
Зона Интернета |
Установка из Интернета |
Зона Интернета |
Установка из общего сетевого файлового ресурса |
Зона локальной интрасети |
Установка с компакт-диска |
Full Trust |
Разрешения по умолчанию основываются на местоположении, из которого была развернута исходная версия приложения. Обновления приложения наследуют эти разрешения. Если приложение настроено на проверку обновлений из Интернета или сетевого местоположения, и доступна более новая версия, исходная установка может получить разрешения для зоны Интернета или интрасети вместо разрешений полного доверия. Чтобы запретить вывод запросов, администратор системы может задать политику развертывания ClickOnce, которая определит конкретного издателя приложения в качестве доверенного источника. Для компьютеров, на которых развернута эта политика, разрешения предоставляются автоматически, и пользователям не выводятся запросы. Дополнительные сведения см. в разделе Общие сведения о развертывании доверенных приложений. Чтобы настроить развертывание доверенного приложения, сертификат можно установить для уровня компьютера или предприятия. Дополнительные сведения см. в разделе Инструкции: добавление надежного издателя на клиентский компьютер для приложений ClickOnce.
Политики управления доступом для кода
Разрешения для приложения определяются настройками в элементе Элемент <trustInfo> (приложение ClickOnce) манифеста приложения. Visual Studio автоматически создает эти данные на основе настроек проекта со страницы свойств Безопасность. Приложению ClickOnce предоставляются только определенные разрешения, которые им запрошены. Например, если там, где для доступа к файлу требуются разрешения полного доверия, приложение запрашивает разрешение на доступ к файлу, ему будет предоставлено только разрешение на доступ к файлу, а не разрешения полного доверия. Разрабатывая приложение ClickOnce, следите за тем, чтобы запрашивались только конкретные разрешения, необходимые приложению. В большинстве случаев можно использовать зоны Интернета или местной интрасети, чтобы ограничить разрешения приложения частичным доверием. Дополнительные сведения см. в разделе Практическое руководство. Установка зоны безопасности для ClickOnce-приложения. Если приложению требуются пользовательские разрешения, можно создать пользовательскую зону. Дополнительные сведения см. в разделе Практическое руководство. Установка пользовательских разрешений для ClickOnce-приложения.
При включении разрешения, не являющегося частью разрешения, устанавливаемого по умолчанию для зоны, из которой было развернуто приложение, пользователю будет предложено предоставить разрешение во время установки или обновления. Чтобы запретить вывод запросов, администратор системы может задать политику развертывания ClickOnce, которая определит конкретного издателя приложения в качестве доверенного источника. На компьютерах, на которых развернута эта политика, разрешения предоставляются автоматически, и для пользователя не выводятся запросы.
Ответственность за работу приложения с надлежащими разрешениями лежит на разработчике. Если приложение во время исполнения запрашивает разрешения за пределами зоны, может возникнуть исключение безопасности. Visual Studio обеспечивает возможность отладки приложения в целевой зоне безопасности и предоставляет помощь в разработке защищенных приложений. Дополнительные сведения см. в разделе Практическое руководство. Отладка ClickOnce-приложения с ограниченными разрешениями.
Дополнительные сведения об управлении доступом для кода и ClickOnce см. в разделе Управление доступом для кода для приложения ClickOnce.
Сертификаты подписи кода
Чтобы опубликовать приложение с использованием развертывания ClickOnce, необходимо подписать манифесты приложения и развертывания для приложения парой открытого и закрытого ключа. Средства для подписи манифеста доступны на странице Подпись в конструкторе проектов. Дополнительные сведения см. в разделе Страница "Подписывание" в конструкторе проектов. Можно также подписывать манифесты при помощи файла ключей во время процесса публикации в окне мастер публикации. Кроме того, приложение Пакет средств разработки программного обеспечения (SDK) для Windows содержит средство подписи файлов, SignTool.exe (программа подписывания), которое позволяет подписать манифест.
После подписи манифестов сведения об издателе, основанные на подписи Authenticode, показываются пользователю в диалоговом окне разрешений во время установки, чтобы пользователь мог убедиться, что приложение получено из надежного источника.
Дополнительные сведения о ClickOnce и сертификатах см. в разделе ClickOnce и технология Authenticode.
Проверка подлинности, основанная на форме ASP.NET
Если требуется контролировать, к каким развертываниям имеет доступ каждый пользователь, не следует включать анонимный доступ к приложениям ClickOnce, развертываемым на веб-сервере. Предпочтительнее разрешить доступ пользователей к установленным развертываниям на основе удостоверения пользователя, используя проверку подлинности Windows.
ClickOnce не поддерживает проверку подлинности на основе форм ASP.NET, так как она предполагает использование постоянных файлов Cookie; эти файлы представляют угрозу безопасности, поскольку они находятся в кэше Internet Explorer и могут быть объектом вредоносной атаки. Поэтому при развертывании приложений ClickOnce никакие сценарии проверки подлинности, кроме проверки подлинности Windows, не поддерживаются.
Передача аргументов
Если в приложение ClickOnce передаются аргументы, возникают дополнительные вопросы по безопасности. ClickOnce предоставляет разработчикам возможность передачи строки запроса в приложения, развернутые через Интернет. Строка запроса принимает вид последовательности пар "имя-значение" в конце URL-адреса, используемого для запуска приложения:
http://servername.adatum.com/WindowsApp1.application?username=joeuser
По умолчанию аргументы строки запроса отключены. Чтобы включить их, для приложения должен быть установлен атрибут trustUrlParameters в манифесте развертывания. Это значение может быть установлено из Visual Studio и из MageUI.exe. Подробное описание шагов по включению передачи строк запросов см. в разделе Практическое руководство. Извлечение сведений строки запроса в интернет-приложении ClickOnce.
Никогда не следует передавать аргументы, извлекаемые с помощью строки запроса, в базу данных или командную строку без проверки аргументов с целью убедиться, что они безопасны. Ненадежные аргументы — это аргументы, которые содержат escape-символы базы данных или командной строки, позволяющие злоумышленникам управлять приложением для выполнения произвольных команд.
Примечание
Аргументы строки запроса представляют единственный способ передачи аргументов в приложение ClickOnce при запуске.В приложение ClickOnce нельзя передавать аргументы из командной строки.
Развертывание малопонятных сборок
Может возникнуть желание сделать приложение малопонятным с помощью Dotfuscator, чтобы предотвратить раскрытие программного кода приложения. Однако процедура запутывания кода сборки не встроена ни в интегрированную среду разработки Visual Studio, ни в процесс развертывания ClickOnce. Поэтому запутывание кода должно выполняться вне процесса развертывания, возможно, на этапе после построения. После построения проекта можно выполнить следующие шаги вручную, вне Visual Studio:
Выполните запутывание кода, используя средство Dotfuscator.
Средство Mage.exe или MageUI.exe используется для генерирования манифестов ClickOnce и их подписания. Дополнительные сведения см. в разделах Mage.exe (средство создания и редактирования манифеста) и MageUI.exe (средство создания и редактирования манифестов, графический клиент).
Вручную опубликуйте (скопируйте) файлы в исходное местоположение развертывания (веб-сервер, общий UNC-ресурс или на компакт-диск).