Sécuriser les applications ClickOnceSecure ClickOnce applications

Les applicationsClickOnceClickOnce sont soumises aux contraintes de sécurité d'accès du code dans .NET Framework afin d'aider à limiter l'accès du code aux opérations et aux ressources protégées.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. Pour cette raison, il est important de comprendre les implications de la sécurité d'accès du code afin d'écrire vos applications ClickOnceClickOnce en conséquence.For that reason, it is important that you understand the implications of code access security to write your ClickOnceClickOnce applications accordingly. Vos applications peuvent utiliser des zones de confiance totale ou de confiance partielle, telles que les zones intranet et Internet, pour limiter l'accès.Your applications can use Full Trust or use partial zones, such as the Internet and Intranet zones, to limit access.

En outre, ClickOnce utilise des certificats pour vérifier l'authenticité de l'éditeur de l'application, et pour signer les manifestes de déploiement et d'application permettant de prouver que les fichiers n'ont pas été falsifiés.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. La signature est une étape facultative, qui facilite la modification des fichiers d'application après que les manifestes ont été générés.Signing is an optional step, which makes it easier to change the application files after the manifests are generated. Toutefois, sans manifestes signés, il est difficile de garantir que le programme d'installation de l'application n'a pas été falsifié lors d'attaques de l'intercepteur au niveau de la sécurité.However, without signed manifests, it is difficult to ensure that the application installer is not tampered in man-in-the-middle security attacks. Pour cette raison, nous vous recommandons de signer vos manifestes d'application et de déploiement pour aider à sécuriser vos applications.For this reason, we recommend that you sign your application and deployment manifests to help secure your applications.

ZonesZones

Les applications déployées à l'aide de la technologie ClickOnceClickOnce sont restreintes à un jeu d'autorisations et d'actions défini par la zone de sécurité.Applications that are deployed using ClickOnceClickOnce technology are restricted to a set of permissions and actions that are defined by the security zone. Les zones de sécurité sont définies dans Internet Explorer et sont basées sur l'emplacement de l'application.Security zones are defined in Internet Explorer, and are based on the location of the application. Le tableau suivant répertorie les autorisations par défaut en fonction de l'emplacement de déploiement:The following table lists the default permissions based on the deployment location:

Emplacement de déploiementDeployment Location Zone de sécuritéSecurity Zone
Exécution à partir du WebRun from Web Zone InternetInternet Zone
Installation à partir du WebInstall from Web Zone InternetInternet Zone
Installation à partir du partage de fichier réseauInstall from network file share Zone Intranet localLocal Intranet Zone
Installation à partir du CD-ROMInstall from CD-ROM Confiance totaleFull Trust

Les autorisations par défaut prennent comme base l'emplacement à partir duquel la version originale de l'application a été déployée ; les mises à jour de l'application hériteront de ces autorisations.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. Si l'application est configurée pour vérifier les mises à jour à partir d'un emplacement Web ou réseau et qu'une version plus récente est disponible, l'installation d'origine peut recevoir des autorisations pour la zone Internet ou Intranet plutôt que des autorisations de confiance totale.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. Pour empêcher des utilisateurs d'être invités, un administrateur système peut spécifier une stratégie de déploiement ClickOnce qui définit un éditeur de l'application spécifique comme une source fiable.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. Pour les ordinateurs sur lesquels cette stratégie est déployée, les autorisations seront automatiquement accordées et l'invite ne sera pas présentée à l'utilisateur.For computers on which this policy is deployed, permissions will be granted automatically and the user will not be prompted. Pour plus d'informations, consultez Trusted Application Deployment Overview.For more information, see Trusted Application Deployment Overview. Pour configurer le déploiement d'applications approuvées, le certificat peut être installé au niveau de l'ordinateur ou au niveau de l'entreprise.To configure trusted application deployment, the certificate can be installed to the machine or enterprise level. Pour plus d'informations, consultez Comment : ajouter un éditeur approuvé à un ordinateur client pour les applications ClickOnce.For more information, see How to: Add a Trusted Publisher to a Client Computer for ClickOnce Applications.

Stratégies de sécurité d’accès au codeCode access security policies

Autorisations d’une application sont déterminées par les paramètres dans le <trustInfo > élément élément du manifeste d’application.Permissions for an application are determined by the settings in the <trustInfo> Element element of the application manifest. Visual StudioVisual Studio génère automatiquement ces informations selon les paramètres figurant sur la page de propriété Sécurité du projet. automatically generates this information based on the settings on the project's Security property page. Seules les autorisations spécifiques demandées par une application ClickOnceClickOnce lui sont accordées.A ClickOnceClickOnce application is granted only the specific permissions that it requests. Par exemple, à l'emplacement où l'accès au fichier requiert des autorisations de type Confiance totale, si l'application demande l'autorisation d'accès de fichier, seule l'autorisation d'accès de fichier, non les autorisations de type Confiance totale, lui sera accordée.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. Lors du développement de votre application ClickOnceClickOnce , assurez-vous de ne demander que les autorisations spécifiques dont l'application a besoin.When developing your ClickOnceClickOnce application, you should make sure that you request only the specific permissions that the application needs. Dans la plupart des cas, vous pouvez utiliser les zones Internet ou intranet local pour limiter votre application à une confiance partielle.In most cases, you can use the Internet or Local Intranet zones to limit your application to partial trust. Pour plus d’informations, consultez Comment : définir une zone de sécurité pour une application ClickOnce.For more information, see How to: Set a security zone for a ClickOnce application. Si votre application requiert des autorisations personnalisées, vous pouvez créer une zone personnalisée.If your application requires custom permissions, you can create a custom zone. Pour plus d’informations, consultez Comment : définir des autorisations personnalisées pour une application ClickOnce.For more information, see How to: Set custom permissions for a ClickOnce application.

L'inclusion d'une autorisation qui ne fait pas partie du jeu d'autorisations par défaut de la zone à partir de laquelle l'application est déployée amènerait l'utilisateur final à être invité à accorder l'autorisation au moment de l'installation ou de la mise à jour.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. Pour empêcher des utilisateurs d'être invités, un administrateur système peut spécifier une stratégie de déploiement ClickOnce qui définit un éditeur de l'application spécifique comme une source fiable.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. Sur les ordinateurs sur lesquels cette stratégie est déployée, les autorisations seront automatiquement accordées et l'invite ne sera pas présentée à l'utilisateur.On computers where this policy is deployed, permissions will automatically be granted and the user will not be prompted.

En tant que développeur, vous devez garantir que votre application s'exécutera avec les autorisations appropriées.As a developer, it is your responsibility to make sure that your application will run with the appropriate permissions. Si l'application demande des autorisations en dehors d'une zone au moment de l'exécution, une exception de sécurité peut s'afficher.If the application requests permissions outside of a zone during run time, a security exception may appear. Visual StudioVisual Studio vous permet de déboguer votre application dans la zone de sécurité cible. enables you to debug your application in the target security zone. et vous aide à développer des applications sécurisées.and provides help in developing secure applications. Pour plus d’informations, consultez Comment : déboguer une application ClickOnce avec des autorisations restreintes.For more information, see How to: Debug a ClickOnce application with restricted permissions.

Pour plus d’informations sur la sécurité d’accès du code et sur ClickOnce, consultez sécurité d’accès du Code pour les applications ClickOnce.For more information about code access security and ClickOnce, see Code access security for ClickOnce applications.

Certificats de signature de codeCode-signing certificates

Pour publier une application à l'aide du déploiement ClickOnceClickOnce , vous pouvez signer les manifestes d'application et de déploiement de l'application en utilisant une paire de clés publique/privée.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. Les outils utilisés pour la signature d'un manifeste sont disponibles sur la page Signature du Concepteur de projets.The tools for signing a manifest are available on the Signing page of the Project Designer. Pour plus d'informations, consultez Signing Page, Project Designer.For more information, see Signing Page, Project Designer. Vous pouvez également signer les manifestes avec un fichier de clé pendant le processus de publication, à l’aide de l’Assistant Publication.Alternatively, you can sign the manifests with a key file during the publishing process, using the Publish Wizard.

Une fois les manifestes signés, les informations sur l'éditeur qui prennent comme base la signature Authenticode seront affichées pour l'utilisateur dans la boîte de dialogue d'autorisations lors de l'installation, afin de signaler à l'utilisateur que l'application provient d'une source fiable.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.

Pour plus d’informations sur ClickOnce et sur les certificats, consultez ClickOnce and Authenticode.For more information about ClickOnce and certificates, see ClickOnce and Authenticode.

Authentification par formulaire ASP.NETASP.NET form-based authentication

Si vous souhaitez contrôler les déploiements auxquels chaque utilisateur peut accéder, vous ne devez pas autoriser un accès anonyme aux applications ClickOnceClickOnce déployées sur un serveur Web.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. Vous devriez plutôt autoriser les utilisateurs à accéder aux déploiements que vous avez installés selon l'identité d'un utilisateur à l'aide de l'authentification Windows.Rather, you would enable users access to the deployments you have installed based on a user's identity using Windows authentication.

Toutefois,ClickOnceClickOnce ne prend pas en charge l'authentification basée sur les formulaires ASP.NET, car il utilise des cookies persistants ; ceux-ci présentent un problème de sécurité parce qu'ils résident dans le cache Internet Explorer et peuvent être piratés.ClickOnceClickOnce 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. Par conséquent, si vous déployez des applications ClickOnceClickOnce , tout scénario d'authentification en plus de l'authentification Windows n'est pas pris en charge.Therefore, if you are deploying ClickOnceClickOnce applications, any authentication scenario besides Windows authentication is unsupported.

Passer des argumentsPass arguments

Une considération supplémentaire en matière de sécurité doit être prise en compte si vous devez passer des arguments dans une application ClickOnceClickOnce .An additional security consideration occurs if you have to pass arguments into a ClickOnceClickOnce application. ClickOnceClickOnce permet aux développeurs de fournir une chaîne de requête aux applications déployées sur le Web. enables developers to supply a query string to applications deployed over the Web. La chaîne de requête prend la forme d'une série de paires nom-valeur à la fin de l'URL utilisée pour lancer l'application :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

Les arguments de chaîne de requête sont désactivés par défaut.By default, query-string arguments are disabled. Pour les activer, l'attribut trustUrlParameters doit être défini dans le manifeste de déploiement de l'application.To enable them, the attribute trustUrlParameters must be set in the application's deployment manifest. Cette valeur peut être définie à partir de Visual StudioVisual Studio et de MageUI.exe.This value can be set from Visual StudioVisual Studio and from MageUI.exe. Pour obtenir des instructions détaillées sur l’activation du passage de chaînes de requête, consultez Comment : récupérer les informations de chaîne de requête dans une application ClickOnce en ligne.For detailed steps on how to enable passing query strings, see How to: Retrieve query string information in an online ClickOnce application.

Vous ne devez jamais passer d'arguments récupérés via une chaîne de requête directement à une base de données ou à la ligne de commande sans les vérifier et vous assurer qu'ils sont sécurisés.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. Les arguments non sécurisés sont ceux qui incluent des caractères d'échappement de la base de données ou de la ligne de commande pouvant permettre à un utilisateur malveillant de manipuler votre application et de lui faire exécuter des commandes arbitraires.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

Les arguments de chaîne de requête constituent la seule manière de passer des arguments à une application ClickOnceClickOnce lors du lancement.Query-string arguments are the only way to pass arguments to a ClickOnceClickOnce application at startup. Vous ne pouvez pas passer d'arguments à une application ClickOnceClickOnce à partir de la ligne de commande.You cannot pass arguments to a ClickOnceClickOnce application from the command line.

Déploiement d’assemblys obscurcisDeploying obfuscated assemblies

Visual Studio inclut la version gratuite PreEmptive Protection - Dotfuscator Community Edition, que vous pouvez utiliser pour protéger vos applications ClickOnce via l’obscurcissement du code et des mesures de protection active.Visual Studio includes the free PreEmptive Protection - Dotfuscator Community Edition, which you can use to protect your ClickOnce applications through code obfuscation and active protection measures. Pour plus d’informations, consultez la section ClickOnce de Guide de l’utilisateur de Dotfuscator Community Edition.For details, please see the ClickOnce section of the Dotfuscator Community Edition User Guide.

Voir aussiSee also

Sécurité et déploiement ClickOnce ClickOnce security and deployment
Choisissez une stratégie de déploiement ClickOnceChoose a ClickOnce deployment strategy