Защита приложений ClickOnceSecure ClickOnce applications

К приложениюClickOnceClickOnce могут применяться ограничения управления доступом для кода на платформе .NET Framework, позволяющие ограничить доступ кода к защищенным ресурсам и операциям.ClickOnceClickOnce applications are subject to code access security constraints in the .NET Framework to help limit the access that code has to protected resources and operations. Важно понимать влияние управления доступом для кода, чтобы писать приложения ClickOnceClickOnce соответствующим образом.For that reason, it is important that you understand the implications of code access security to write your ClickOnceClickOnce applications accordingly. Для ограничения доступа приложение может использовать зоны с полным или частичным доверием, такие как Интернет и интрасеть.Your applications can use Full Trust or use partial zones, such as the Internet and Intranet zones, to limit access.

Кроме того, ClickOnce использует сертификаты для проверки подлинности издателя приложения, подписи приложения и манифестов развертывания, чтобы удостовериться в том, что файлы не были изменены злоумышленником.Additionally, ClickOnce uses certificates to verify the authenticity of the application's publisher, and to sign the application and deployment manifests to prove that the files have not been tampered with. Подписывание — это необязательный шаг, который упрощает изменение файлов приложения после создания манифестов.Signing is an optional step, which makes it easier to change the application files after the manifests are generated. Без подписанных манифестов, однако, трудно гарантировать, что установщик приложения не был изменен злоумышленником (атака "злоумышленник в середине").However, without signed manifests, it is difficult to ensure that the application installer is not tampered in man-in-the-middle security attacks. По этой причине рекомендуется подписывать манифесты приложений и развертываний для защиты приложений.For this reason, we recommend that you sign your application and deployment manifests to help secure your applications.

ЗоныZones

Для приложений, развертываемых с помощью технологии ClickOnceClickOnce , ограничен доступ к наборам разрешений и действий, которые определены в зоне безопасности.Applications that are deployed using ClickOnceClickOnce technology are restricted to a set of permissions and actions that are defined by the security zone. Зоны безопасности определены в Internet Explorer и берут за основу местоположение приложения.Security zones are defined in Internet Explorer, and are based on the location of the application. Разрешения по умолчанию, основанные на местоположении развертывания, перечисляются в следующей таблице:The following table lists the default permissions based on the deployment location:

Местоположение развертыванияDeployment Location Зона безопасностиSecurity Zone
Запуск из ИнтернетаRun from Web Зона ИнтернетаInternet Zone
Установка из ИнтернетаInstall from Web Зона ИнтернетаInternet Zone
Установка из общего сетевого файлового ресурсаInstall from network file share Зона локальной интрасетиLocal Intranet Zone
Установка с компакт-дискаInstall from CD-ROM Full TrustFull Trust

Разрешения по умолчанию основываются на местоположении, из которого была развернута исходная версия приложения. Обновления приложения наследуют эти разрешения.The default permissions are based on the location from which the original version of the application was deployed; updates to the application will inherit those permissions. Если приложение настроено на проверку обновлений из Интернета или сетевого местоположения, и доступна более новая версия, исходная установка может получить разрешения для зоны Интернета или интрасети вместо разрешений полного доверия.If the application is configured to check for updates from a Web or network location and a newer version is available, the original installation can receive permissions for the Internet or Intranet zone instead of full-trust permissions. Чтобы запретить вывод запросов, администратор системы может задать политику развертывания ClickOnce, которая определит конкретного издателя приложения в качестве доверенного источника.To prevent users from being prompted, a System Administrator can specify a ClickOnce deployment policy that defines a specific application publisher as a trusted source. Для компьютеров, на которых развернута эта политика, разрешения предоставляются автоматически, и пользователям не выводятся запросы.For computers on which this policy is deployed, permissions will be granted automatically and the user will not be prompted. Для получения дополнительной информации см. Trusted Application Deployment Overview.For more information, see Trusted Application Deployment Overview. Чтобы настроить развертывание доверенного приложения, сертификат можно установить для уровня компьютера или предприятия.To configure trusted application deployment, the certificate can be installed to the machine or enterprise level. Дополнительные сведения см. в разделе Как добавить надежного издателя на клиентский компьютер для приложений ClickOnce.For more information, see How to: Add a Trusted Publisher to a Client Computer for ClickOnce Applications.

Политики управления доступом для кодаCode access security policies

Разрешения для приложения определяются параметрами в элементе <trustInfo > Element манифеста приложения.Permissions for an application are determined by the settings in the <trustInfo> Element element of the application manifest. Visual StudioVisual Studio автоматически создает эти данные на основе настроек проекта со страницы свойств Безопасность .automatically generates this information based on the settings on the project's Security property page. Приложению ClickOnceClickOnce предоставляются только определенные разрешения, которые им запрошены.A ClickOnceClickOnce application is granted only the specific permissions that it requests. Например, если там, где для доступа к файлу требуются разрешения полного доверия, приложение запрашивает разрешение на доступ к файлу, ему будет предоставлено только разрешение на доступ к файлу, а не разрешения полного доверия.For example, where file access requires full-trust permissions, if the application requests file-access permission, it will only be granted file-access permission, not full-trust permissions. При разработке приложения ClickOnceClickOnce необходимо убедиться в запросе только определенных разрешений, которые требуются приложению.When developing your ClickOnceClickOnce application, you should make sure that you request only the specific permissions that the application needs. В большинстве случаев для ограничения приложения частичным доверием можно использовать зоны Интернета или локальной интрасети.In most cases, you can use the Internet or Local Intranet zones to limit your application to partial trust. Дополнительные сведения см. в разделе Как установить зону безопасности для приложения ClickOnce.For more information, see How to: Set a security zone for a ClickOnce application. Если приложению требуются пользовательские разрешения, можно создать пользовательскую зону.If your application requires custom permissions, you can create a custom zone. Дополнительные сведения см. в разделе Как установить пользовательские разрешения для приложения ClickOnce.For more information, see How to: Set custom permissions for a ClickOnce application.

При включении разрешения, не являющегося частью разрешения, устанавливаемого по умолчанию для зоны, из которой было развернуто приложение, пользователю будет предложено предоставить разрешение во время установки или обновления.Including a permission that is not part of the default permission set for the zone from which the application is deployed will cause the end user to be prompted to grant permission at install or update time. Чтобы запретить вывод запросов, администратор системы может задать политику развертывания ClickOnce, которая определит конкретного издателя приложения в качестве доверенного источника.To prevent users from being prompted, a system administrator can specify a ClickOnce deployment policy that defines a specific application publisher as a trusted source. На компьютерах, на которых развернута эта политика, разрешения предоставляются автоматически, и для пользователя не выводятся запросы.On computers where this policy is deployed, permissions will automatically be granted and the user will not be prompted.

Ответственность за работу приложения с надлежащими разрешениями лежит на разработчике.As a developer, it is your responsibility to make sure that your application will run with the appropriate permissions. Если приложение во время исполнения запрашивает разрешения за пределами зоны, может возникнуть исключение безопасности.If the application requests permissions outside of a zone during run time, a security exception may appear. Visual StudioVisual Studio позволяет отлаживать приложения в целевой зоне безопасности.enables you to debug your application in the target security zone. и помогает разрабатывать защищенные приложения.and provides help in developing secure applications. Дополнительные сведения см. в разделе Как отладить приложение ClickOnce с ограниченными разрешениями.For more information, see How to: Debug a ClickOnce application with restricted permissions.

Дополнительные сведения об управлении доступом для кода и ClickOnce см. в статье Управление доступом для кода для приложений ClickOnce.For more information about code access security and ClickOnce, see Code access security for ClickOnce applications.

Сертификаты подписи кодаCode-signing certificates

Чтобы опубликовать приложение с использованием развертывания ClickOnceClickOnce , необходимо подписать манифесты приложения и развертывания для приложения парой открытого и закрытого ключа.To publish an application by using ClickOnceClickOnce deployment, you can sign the application and deployment manifests for the application by using a public/private key pair. Средства для подписи манифеста доступны на странице Подпись в конструкторе проектов.The tools for signing a manifest are available on the Signing page of the Project Designer. Дополнительные сведения см. в разделе Signing Page, Project Designer.For more information, see Signing Page, Project Designer. Можно также подписывать манифесты при помощи файла ключей во время процесса публикации, используя мастер публикаций.Alternatively, you can sign the manifests with a key file during the publishing process, using the Publish Wizard.

После подписи манифестов сведения об издателе, основанные на подписи Authenticode, показываются пользователю в диалоговом окне разрешений во время установки, чтобы пользователь мог убедиться, что приложение получено из надежного источника.After the manifests are signed, the publisher information based on the Authenticode signature will be displayed to the user in the permissions dialog box during installation, to show the user that the application originated from a trusted source.

Дополнительные сведения о ClickOnce и сертификатах см. в статье ClickOnce and Authenticode.For more information about ClickOnce and certificates, see ClickOnce and Authenticode.

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

Если требуется контролировать, к каким развертываниям имеет доступ каждый пользователь, не следует включать анонимный доступ к приложениям ClickOnceClickOnce , развертываемым на веб-сервере.If you want to control which deployments each user can access, you should not enable anonymous access to ClickOnceClickOnce applications deployed on a Web server. Предпочтительнее разрешить доступ пользователей к установленным развертываниям на основе удостоверения пользователя, используя проверку подлинности Windows.Rather, you would enable users access to the deployments you have installed based on a user's identity using Windows authentication.

ClickOnceClickOnce не поддерживает проверку подлинности на основе форм ASP.NET, так как она предполагает использование постоянных файлов Cookie; эти файлы представляют угрозу безопасности, поскольку они находятся в кэше Internet Explorer и могут быть объектом вредоносной атаки.does not support ASP.NET forms-based authentication because it uses persistent cookies; these present a security risk because they reside in the Internet Explorer cache and can be hacked. Поэтому при развертывании приложений ClickOnceClickOnce никакие сценарии проверки подлинности, кроме проверки подлинности Windows, не поддерживаются.Therefore, if you are deploying ClickOnceClickOnce applications, any authentication scenario besides Windows authentication is unsupported.

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

Если в приложение ClickOnceClickOnce передаются аргументы, возникают дополнительные вопросы по безопасности.An additional security consideration occurs if you have to pass arguments into a ClickOnceClickOnce application. ClickOnceClickOnce предоставляет разработчикам возможность передачи строки запроса в приложения, развернутые через Интернет.enables developers to supply a query string to applications deployed over the Web. Строка запроса принимает вид последовательности пар "имя-значение" в конце URL-адреса, используемого для запуска приложения:The query string takes the form of a series of name-value pairs at the end of the URL used to start the application:

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

По умолчанию аргументы строки запроса отключены.By default, query-string arguments are disabled. Чтобы включить их, для приложения должен быть установлен атрибут trustUrlParameters в манифесте развертывания.To enable them, the attribute trustUrlParameters must be set in the application's deployment manifest. Это значение может быть установлено из Visual StudioVisual Studio и из MageUI.exe.This value can be set from Visual StudioVisual Studio and from MageUI.exe. Подробные инструкции по включению передачи строк запросов, см. в разделе как: извлечь сведения строки запроса в интернет-приложении ClickOnce.For detailed steps on how to enable passing query strings, see How to: Retrieve query string information in an online ClickOnce application.

Никогда не следует передавать аргументы, извлекаемые с помощью строки запроса, в базу данных или командную строку без проверки аргументов с целью убедиться, что они безопасны.You should never pass arguments retrieved through a query string to a database or to the command line without checking the arguments to make sure that they are safe. Ненадежные аргументы — это аргументы, которые содержат escape-символы базы данных или командной строки, позволяющие злоумышленникам управлять приложением для выполнения произвольных команд.Unsafe arguments are ones that include database or command line escape characters that could allow a malicious user to manipulate your application into executing arbitrary commands.

Note

Аргументы строки запроса представляют единственный способ передачи аргументов в приложение ClickOnceClickOnce при запуске.Query-string arguments are the only way to pass arguments to a ClickOnceClickOnce application at startup. В приложение ClickOnceClickOnce нельзя передавать аргументы из командной строки.You cannot pass arguments to a ClickOnceClickOnce application from the command line.

Развертывание замаскированных сборокDeploying obfuscated assemblies

Visual Studio включает в себя бесплатную программу PreEmptive Protection — Dotfuscator Community, которую можно использовать для защиты приложений ClickOnce с помощью обфускации кода и активных мер по защите.Visual Studio includes the free PreEmptive Protection - Dotfuscator Community, which you can use to protect your ClickOnce applications through code obfuscation and active protection measures. Дополнительные сведения см. в разделе по ClickOnce руководства пользователя Dotfuscator Community.For details, please see the ClickOnce section of the Dotfuscator Community User Guide.

См. такжеSee also