Déploiement et sécurité ClickOnce

Mise à jour : novembre 2007

Les applications déployées à l'aide de la technologie ClickOnce s'exécutent dans un "bac à sable (sandbox)", avec un jeu limité d'autorisations basé sur une zone de sécurité. Le tableau suivant répertorie les autorisations par défaut en fonction de l'emplacement de déploiement:

Emplacement de déploiement

Zone de sécurité

Exécution à partir du Web

Zone Internet

Installation à partir du Web

Zone Internet

Installation à partir du partage de fichier réseau

Zone Intranet

Installation à partir du CD-ROM

Confiance totale

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. 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. 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. 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.

Sécurité et autorisations

En tant que développeur, vous devez garantir que votre application s'exécutera avec les autorisations appropriées.

Remarque :

Visual Studio permet de déboguer votre application dans la zone de sécurité cible et fournit une aide pour le développement des applications sécurisées.

Il existe des cas où une application ClickOnce peut requérir des autorisations élevées. Par exemple, une application qui doit interagir avec une feuille de calcul Excel exige des autorisations d'un niveau supérieur à celles qui sont définies pour les zones Internet ou Intranet. Si une application requiert un niveau d'autorisations élevé, l'utilisateur sera invité pendant installation à accorder l'autorisation. Si l'utilisateur accepte, l'application sera installée ; dans le cas contraire, l'installation sera interrompue.

Remarque :

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. 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.

Les autorisations relatives à une application sont déterminées par les paramètres de l'élément <trustInfo>, élément (Application ClickOnce) du manifeste d'application. Visual Studio génère automatiquement cette information sur la base des paramètres de la page de propriétés Sécurité du projet. Seules les autorisations spécifiques qu'il demande sont accordées à une application ClickOnce. 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. Lorsque vous développez votre application ClickOnce, veillez à demander uniquement les autorisations spécifiques dont l'application a besoin.

De plus, le manifeste de déploiement doit être signé à l'aide de l'outil de signature Authenticode. Les informations sur l'éditeur qui prennent comme base l'outil de signature Authenticode seront affichées à l'utilisateur dans la boîte de dialogue d'autorisations pendant l'installation, afin de signaler à l'utilisateur que l'application provient d'une source fiable. Le Kit de développement logiciel (SDK) Windows inclut un outil de signature de fichiers, Signature, outil (SignTool.exe), qui permet de signer le manifeste. (Notez que l'outil de signature signcode.exe a été désapprouvé.)

Remarque :

La fonctionnalité de signature, disponible dans Visual Studio 2003 et les versions antérieures, a été supprimée des projets Configuration et déploiement (projets d'installation, projets d'installation Web, projets CAB et Modules de fusion). Si vous avez importé un projet Visual Studio 2003 avec la signature activée dans Visual Studio 2005, ou si vous souhaitez activer la signature pour votre projet de déploiement, vous devez signer les fichiers dans la sortie de génération à l'aide de Signature, outil (SignTool.exe) au cours d'une étape après génération. Pour plus d'informations sur la procédure à suivre, consultez Le fichier '<fichier>' n'a pas été signé.

Authentification basée sur les formulaires ASP.NET

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 ClickOnce déployées sur un serveur Web. Vous devriez plutôt autoriser les utilisateurs à accéder aux déploiements que vous avez installés selon l'identité d'un utilisateur (utilisation de l'authentification Windows NT).

Si vous déployez dans un environnement sans authentification Windows NT, une solution possible pourrait consister à tenter d'utiliser l'authentification basée sur les formulaires d'ASP.NET pour authentifier l'utilisateur. Toutefois, ClickOnce ne prend pas en charge l'authentification basée sur les formulaires, 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. Par conséquent, si vous déployez des applications ClickOnce, tout scénario d'authentification en plus de l'authentification Windows NT n'est pas pris en charge.

Passage d'arguments

Une autre considération sur la sécurité se présente si vous devez passer des arguments dans une application ClickOnce. ClickOnce permet aux développeurs de fournir une chaîne de requête aux applications déployées sur le 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 :

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

Les arguments de chaîne de requête sont désactivés par défaut. Pour les activer, l'attribut trustUrlParameters doit être défini dans le manifeste de déploiement de l'application. Cette valeur peut être définie à partir de Visual Studio et de MageUI.exe. Pour les procédures 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.

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. 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.

Remarque :

Les arguments de chaîne de requête constituent la seule manière de passer des arguments à une application ClickOnce lors du lancement. Vous ne pouvez pas passer d'arguments à une application ClickOnce à partir de la ligne de commande.

Déploiement d'assemblys obscurcis

Vous pouvez être amené à obscurcir votre application à l'aide de Dotfuscator pour empêcher d'autres utilisateurs d'effectuer une ingénierie à rebours du code. Toutefois, l'obscurcissement d'assembly n'est pas intégré dans l'IDE de Visual Studio ou le processus de déploiement ClickOnce. Par conséquent, vous devrez exécuter l'obscurcissement en dehors du processus de déploiement, éventuellement à l'aide d'une étape après génération. Après avoir généré le projet, vous pourrez exécuter manuellement les étapes suivantes, en dehors de Visual Studio :

  1. Exécutez l'obscurcissement à l'aide de Dotfuscator. Pour plus d'informations, consultez Procédure pas à pas : déploiement manuel d'une application ClickOnce.

  2. Utilisez Mage.exe ou MageUI.exe pour générer et signer les manifestes ClickOnce. Pour plus d'informations, consultez Outil Manifest Generation and Editing (Mage.exe) et Manifest Generation and Editing, outil du client graphique (MageUI.exe).

  3. Publiez (copiez) manuellement les fichiers sur votre emplacement source de déploiement (serveur Web, partage UNC ou CD-ROM).

Voir aussi

Concepts

Choix d'une stratégie de déploiement

Choix d'une stratégie de déploiement ClickOnce

Référence

Outil File Signing Tool (Signcode.exe)

Autres ressources

Déploiement ClickOnce