Развертывание и безопасность ClickOnce

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

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

Местоположение развертывания

Зона безопасности

Запуск из Интернета

Зона Интернета

Установка из Интернета

Зона Интернета

Установка из общего сетевого файлового ресурса

Зона интрасети

Установка с компакт-диска

Полное доверие

Разрешения по умолчанию основываются на местоположении, из которого была развернута исходная версия приложения. Обновления приложения наследуют эти разрешения. Если приложение настроено на проверку обновлений из Интернета или сетевого местоположения, и доступна более новая версия, исходная установка может получить разрешения для зоны Интернета или интрасети вместо разрешений полного доверия. Чтобы запретить вывод запросов, администратор системы может задать политику развертывания ClickOnce, которая определит конкретного издателя приложения в качестве доверенного источника. Для компьютеров, на которых развернута эта политика, разрешения предоставляются автоматически, и пользователям не выводятся запросы.

Безопасность и разрешения

Ответственность за работу приложения с надлежащими разрешениями лежит на разработчике.

76e4d2xw.alert_note(ru-ru,VS.90).gifПримечание.

Visual Studio обеспечивает возможность отладки приложения в целевой зоне безопасности и предоставляет помощь в разработке защищенных приложений.

Существуют ситуации, когда приложению ClickOnce могут потребоваться разрешения более высокого уровня. Например, приложению, которое должно взаимодействовать с таблицей Excel, требуются разрешения, выходящие за пределы доверия, определенного для зон Интернета или интрасети. Если приложению требуются разрешения повышенного уровня, во время установки пользователю будет выведен запрос на предоставление необходимого разрешения. Если пользователь примет условия, приложение будет установлено; если условия не будут приняты, процесс установки остановится.

76e4d2xw.alert_note(ru-ru,VS.90).gifПримечание.

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

Разрешения для приложения определяются путем установки в элементе Элемент <trustInfo> (приложение ClickOnce) манифеста приложения. Visual Studio автоматически генерирует эти сведения на основе параметров, представленных на странице свойств Безопасность проекта. Приложению ClickOnce предоставляются только конкретные разрешения, которые запрошены им. Например, если там, где для доступа к файлу требуются разрешения полного доверия, приложение запрашивает разрешение на доступ к файлу, ему будет предоставлено только разрешение на доступ к файлу, а не разрешения полного доверия. При разработке приложения ClickOnce следует убедиться, что запрашиваются только конкретные разрешения, которые необходимы приложению.

Кроме того, манифест развертывания должен быть подписан с помощью технологии подписания Authenticode. Сведения об издателе, основанные на подписи Authenticode, показываются пользователю в диалоговом окне разрешений во время установки, чтобы пользователь мог убедиться, что приложение получено из надежного источника. Приложение SDK (пакет средств разработки программного обеспечения) для Windows содержит средство подписания файла, Программа подписывания Sign Tool (SignTool.exe), которое позволяет подписать манифест. (Обратите внимание, что средство подписания, signcode.exe, уже устарело.)

76e4d2xw.alert_note(ru-ru,VS.90).gifПримечание.

Возможность подписания, доступная в Visual Studio версии 2003 и более ранних версиях, была удалена из проектов Установка и развертывание (Проекты Установка, проекты Установка веб–приложений, проекты CAB-файлы и Модули слияния). Если проект Visual Studio 2003 с включенной функцией подписания импортирован в Visual Studio 2005 или если требуется включить подписание для проекта развертывания, необходимо будет подписать файлы в выводе построения с помощью Программа подписывания Sign Tool (SignTool.exe) на шаге, следующем после построения. Сведения о том, как это сделать, см. в разделе Файл <файл> не был подписан.

Проверка подлинности, основанная на форме ASP.NET

Если требуется контролировать, к каким развертываниям имеет доступ каждый пользователь, не следует включать анонимный доступ к приложениям ClickOnce, развертываемым на веб-сервере. Предпочтительнее включить доступ пользователей к развертываниям, установленным на основе удостоверения пользователя (используя проверку подлинности Windows NT).

Если развертывание выполняется в среде без проверки подлинности Windows NT, решение задачи проверки подлинности пользователей могло бы состоять в использовании проверки подлинности на основе форм ASP.NET. Однако ClickOnce не поддерживает проверку подлинности на основе форм, так как использует неизменные файлы Cookie. Эти файлы представляют угрозу безопасности, поскольку они находятся в кэше обозревателя Internet Explorer и могут быть доступны посторонним лицам. Поэтому при развертывании приложений ClickOnce любые сценарии проверки подлинности помимо проверки подлинности Windows NT не поддерживаются.

Передача аргументов

Если в приложение ClickOnce передаются аргументы, возникают дополнительные вопросы по безопасности. ClickOnce предоставляет разработчикам возможность передачи строки запроса в приложения, развернутые через Интернет. Строка запроса принимает вид последовательности пар "имя-значение" в конце URL-адреса, используемого для запуска приложения:

http://servername.adatum.com/WindowsApp1.application?username=joeuser

По умолчанию аргументы строки запроса отключены. Чтобы включить их, для приложения должен быть установлен атрибут trustUrlParameters в манифесте развертывания. Это значение может быть установлено из Visual Studio и из MageUI.exe. Подробное описание шагов по включению передачи строк запросов см. в разделе Практическое руководство. Извлечение сведений строки запроса в приложении ClickOnce.

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

76e4d2xw.alert_note(ru-ru,VS.90).gifПримечание.

Аргументы строки запроса представляют единственный способ передачи аргументов в приложение ClickOnce при запуске. Аргументы невозможно передать в приложение ClickOnce из командной строки.

Развертывание малопонятных сборок

Может возникнуть желание сделать приложение малопонятным с помощью Dotfuscator, чтобы предотвратить раскрытие программного кода приложения. Однако процедура запутывания кода сборки не встроена ни в интегрированную среду разработки Visual Studio, ни в процесс развертывания ClickOnce. Поэтому запутывание кода должно выполняться вне процесса развертывания, возможно, на этапе после построения. После построения проекта можно выполнить следующие шаги вручную, вне Visual Studio:

  1. Выполните запутывание кода, используя средство Dotfuscator. Дополнительные сведения см. в разделе Пошаговое руководство. Развертывание приложения ClickOnce вручную.

  2. Средство Mage.exe или MageUI.exe используется для генерирования манифестов ClickOnce и их подписания. Дополнительные сведения см. в разделах Средство создания и редактирования манифеста (Mage.exe) и Средство создания и редактирования манифестов, графический клиент (MageUI.exe).

  3. Вручную опубликуйте (скопируйте) файлы в исходное местоположение развертывания (веб-сервер, общий UNC-ресурс или на компакт-диск).

См. также

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

Выбор стратегии развертывания

Выбор стратегии развертывания ClickOnce

Ссылки

Средство подписи файлов (Signcode.exe)

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

Развертывание ClickOnce