Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Приложения ClickOnce подвержены ограничениям безопасности доступа к коду в .NET Framework, чтобы ограничить доступ к защищенным ресурсам и операциям. Поэтому важно понимать последствия безопасности доступа к коду для записи приложений ClickOnce соответствующим образом. Приложения могут использовать полное доверие или использовать частичные зоны, такие как зоны Интернета и интрасети, для ограничения доступа.
Кроме того, ClickOnce использует сертификаты для проверки подлинности издателя приложения, а также для подписывания манифестов приложения и развертывания, чтобы доказать, что файлы не были изменены. Подписывание — это необязательный шаг, который упрощает изменение файлов приложения после создания манифестов. Однако без подписанных манифестов трудно убедиться, что установщик приложений не был подвержен изменениям в результате атаки типа 'человек посередине'. По этой причине рекомендуется подписать манифесты приложения и развертывания, чтобы защитить приложения.
Зоны
Приложения, развернутые с помощью технологии ClickOnce, ограничены набором разрешений и действий, определенных зоной безопасности. Зоны безопасности определяются в браузере и основаны на расположении приложения. В следующей таблице перечислены разрешения по умолчанию на основе расположения развертывания:
| Расположение развертывания | Зона безопасности |
|---|---|
| Запуск из Интернета | Зона Интернета |
| Установка из Интернета | Зона Интернета |
| Установка из сетевого файлового ресурса | Зона локальной интрасети |
| Установка из CD-ROM | Полное доверие |
Разрешения по умолчанию основаны на расположении, из которого была развернута исходная версия приложения; обновления приложения наследуют эти разрешения. Если приложение настроено для проверки обновлений из веб-ресурса или сетевого расположения и доступна более новая версия, исходная установка может получать разрешения для зоны Интернета или интрасети вместо разрешений полного доверия. Чтобы избежать уведомлений для пользователей, системный администратор может указать политику развертывания ClickOnce, которая определяет конкретного издателя приложения как надежный источник. Для компьютеров, на которых развернута эта политика, разрешения будут предоставлены автоматически, и пользователю не будет предложено. Дополнительные сведения см. в обзоре развертывания доверенных приложений. Чтобы настроить развертывание доверенных приложений, сертификат можно установить на компьютере или корпоративном уровне. Дополнительные сведения см. в разделе "Практическое руководство. Добавление доверенного издателя на клиентский компьютер для приложений ClickOnce".
Замечание
В ClickOnce для .NET Core и .NET 5 или более поздней версии эта функция не поддерживается. Дополнительные сведения см. в разделе ClickOnce для .NET.
Политики безопасности доступа к коду
Разрешения для приложения определяются параметрами в элементе <trustInfo> Element манифеста приложения. Visual Studio автоматически создает эти сведения на основе параметров на странице свойств безопасности проекта. Приложению ClickOnce предоставляются только те разрешения, которые оно запрашивает. Например, если для доступа к файлам требуются разрешения полного доверия, если приложение запрашивает разрешение на доступ к файлам, оно будет предоставлено только разрешение на доступ к файлам, а не разрешения полного доверия. При разработке приложения ClickOnce необходимо убедиться, что запрашивают только определенные разрешения, необходимые приложению. В большинстве случаев можно использовать зоны Интернета или локальной интрасети, чтобы ограничить приложение частичным доверием. Дополнительные сведения см. в разделе "Практическое руководство. Настройка зоны безопасности для приложения ClickOnce". Если приложению требуются пользовательские разрешения, можно создать пользовательскую зону. Дополнительные сведения см. в разделе "Практическое руководство. Настройка пользовательских разрешений для приложения ClickOnce".
Замечание
В ClickOnce для .NET Core и .NET 5 или более поздней версии безопасность доступа к коду не поддерживается. В .NET Framework использование управления доступом к коду не является лучшей практикой и не рекомендуется.
Включение разрешения, которое не является частью набора разрешений по умолчанию для зоны, из которой развернуто приложение, приведет к тому, что пользователю будет предложено предоставить разрешение во время установки или обновления. Чтобы избежать уведомлений для пользователей, системный администратор может указать политику развертывания ClickOnce, которая определяет конкретного издателя приложения как надежный источник. На компьютерах, на которых развернута эта политика, разрешения будут предоставлены автоматически, и пользователю не будет предложено.
Разработчик несет ответственность за то, чтобы ваше приложение работало с соответствующими разрешениями. Если приложение запрашивает разрешения за пределами зоны во время выполнения, может появиться исключение безопасности. Visual Studio позволяет отлаживать приложение в целевой зоне безопасности и предоставляет помощь в разработке безопасных приложений. Дополнительные сведения см. в разделе "Отладка приложений ClickOnce", использующих System.Deployment.Application.
Дополнительные сведения о безопасности доступа к коду и ClickOnce см. в разделе "Безопасность доступа к коду" для приложений ClickOnce.
Сертификаты подписывания кода
Чтобы опубликовать приложение с помощью развертывания ClickOnce, вы можете подписать манифесты приложения и развертывания для приложения с помощью пары открытого и закрытого ключа. Средства подписывания манифеста доступны на странице подписывания конструктора проектов. Дополнительные сведения см. в разделе Страница подписи, Конструктор проектов.
После подписания манифестов сведения о издателе на основе подписи Authenticode будут отображаться пользователю в диалоговом окне разрешений во время установки, чтобы показать пользователю, что приложение возникло из доверенного источника.
Дополнительные сведения о ClickOnce и сертификатах см. в разделе ClickOnce и Authenticode.
проверка подлинности на основе форм ASP.NET
Если вы хотите контролировать, к каким развертываниям может получить доступ каждый пользователь, не следует включать анонимный доступ к приложениям ClickOnce, развернутым на веб-сервере. Скорее, вы позволите пользователям получать доступ к развертываниям, установленным на основе удостоверения пользователя с помощью проверки подлинности Windows.
ClickOnce не поддерживает проверку подлинности на основе форм ASP.NET, так как использует постоянные файлы cookie; они представляют угрозу безопасности, так как они находятся в кэше браузера и могут быть взломаны. Поэтому при развертывании приложений ClickOnce любой сценарий проверки подлинности, кроме проверки подлинности Windows, не поддерживается.
Передача аргументов
Если необходимо передать аргументы в приложение ClickOnce, возникают дополнительные соображения безопасности. ClickOnce позволяет разработчикам предоставлять строку запроса приложениям, развернутыми в Интернете. Строка запроса принимает форму ряда пар "имя-значение" в конце URL-адреса, используемого для запуска приложения:
http://servername.adatum.com/WindowsApp1.application?username=joeuser
По умолчанию аргументы строки запроса отключены. Чтобы включить их, атрибут trustUrlParameters должен быть задан в манифесте развертывания приложения. Это значение можно задать из Visual Studio и из MageUI.exe. Подробные инструкции по включению передачи строк запроса см. в статье "Практическое руководство. Получение сведений о строке запроса в приложении ClickOnce в сети".
Никогда не следует передавать аргументы, полученные через строку запроса в базу данных или в командную строку, не проверяя аргументы, чтобы убедиться, что они безопасны. Небезопасные аргументы — это те, которые включают в себя escape-символы базы данных или командной строки, которые могут позволить злоумышленнику управлять приложением в выполнении произвольных команд.
Замечание
Аргументы строки запроса — единственный способ передать аргументы приложению ClickOnce при запуске. Невозможно передать аргументы в приложение ClickOnce из командной строки.
Развертывание обфусцированных сборок
Visual Studio включает бесплатную PreEmptive Protection - Dotfuscator Community, которую можно использовать для защиты приложений ClickOnce с помощью обфускации кода и активных мер безопасности.