Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les applications ClickOnce sont soumises à des contraintes de sécurité d’accès au code dans le .NET Framework pour limiter l’accès dont le code a à protéger les ressources et les opérations. Pour cette raison, il est important de comprendre les implications de la sécurité de l’accès au code pour écrire vos applications ClickOnce en conséquence. Vos applications peuvent utiliser la confiance totale ou utiliser des zones partielles, telles que les zones Internet et Intranet, pour limiter l’accès.
En outre, ClickOnce utilise des certificats pour vérifier l’authenticité de l’éditeur de l’application et signer les manifestes d’application et de déploiement pour prouver que les fichiers n’ont pas été falsifiés. La signature est une étape facultative, ce qui facilite la modification des fichiers d’application une fois les manifestes générés. Toutefois, sans manifestes signés, il est difficile de s’assurer que le programme d’installation de l’application n’est pas falsifié lors d'attaques de sécurité de type homme du milieu. Pour cette raison, nous vous recommandons de signer vos manifestes d’application et de déploiement pour sécuriser vos applications.
Zones
Les applications déployées à l’aide de la technologie ClickOnce sont limitées à un ensemble d’autorisations et d’actions définies par la zone de sécurité. Les zones de sécurité sont définies dans le navigateur et sont basées sur l’emplacement de l’application. 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écuter à partir du web | Zone Internet |
| Installer à partir du web | Zone Internet |
| Installer à partir du partage de fichiers réseau | Zone Intranet local |
| Installer à partir de CD-ROM | Confiance totale |
Les autorisations par défaut sont basées sur l’emplacement à partir duquel la version d’origine de l’application a été déployée ; les mises à jour de l’application héritent de ces autorisations. Si l’application est configurée pour rechercher 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 au lieu d’autorisations de confiance totale. Pour empêcher les utilisateurs d’être invités, un administrateur système peut spécifier une stratégie de déploiement ClickOnce qui définit un éditeur d’application spécifique comme source approuvée. Pour les ordinateurs sur lesquels cette stratégie est déployée, les autorisations sont accordées automatiquement et l’utilisateur ne sera pas invité. Pour plus d’informations, consultez Vue d’ensemble du déploiement d’applications approuvées. Pour configurer le déploiement d’applications approuvées, le certificat peut être installé au niveau de l’ordinateur ou de l’entreprise. Pour plus d’informations, consultez Guide pratique pour ajouter un serveur de publication approuvé à un ordinateur client pour les applications ClickOnce.
Remarque
Dans ClickOnce pour .NET Core et .NET 5 ou version ultérieure, cette fonctionnalité n’est pas prise en charge. Pour plus d’informations, consultez ClickOnce pour .NET.
Stratégies de sécurité d’accès au code
Les autorisations d’une application sont déterminées par les paramètres de l’élément <trustInfo> Element du manifeste de l’application. Visual Studio génère automatiquement ces informations en fonction des paramètres de la page de propriétés sécurité du projet. Une application ClickOnce reçoit uniquement les autorisations spécifiques qu’elle demande. Par exemple, lorsque l’accès aux fichiers nécessite des autorisations d’approbation totale, si l’application demande l’autorisation d’accès aux fichiers, elle n’est accordée qu’à l’autorisation d’accès aux fichiers, et non aux autorisations d’approbation totale. Lors du développement de votre application ClickOnce, vous devez vous assurer que vous demandez uniquement les autorisations spécifiques dont l’application a besoin. Dans la plupart des cas, vous pouvez utiliser les zones Internet ou Intranet local pour limiter la confiance partielle de votre application. Pour plus d’informations, consultez Guide pratique pour définir une zone de sécurité pour une application ClickOnce. Si votre application nécessite des autorisations personnalisées, vous pouvez créer une zone personnalisée. Pour plus d’informations, consultez Guide pratique pour définir des autorisations personnalisées pour une application ClickOnce.
Remarque
Dans ClickOnce pour .NET Core et .NET 5 ou version ultérieure, la sécurité d’accès au code n’est pas prise en charge. Dans .NET Framework, l’utilisation de la sécurité d’accès au code n’est pas une bonne pratique et n’est pas recommandée.
L’inclusion d’une autorisation qui ne fait pas partie du jeu d’autorisations par défaut pour la zone à partir de laquelle l’application est déployée entraîne l’invite de l’utilisateur final à accorder l’autorisation au moment de l’installation ou de la mise à jour. Pour empêcher les utilisateurs d’être invités, un administrateur système peut spécifier une stratégie de déploiement ClickOnce qui définit un éditeur d’application spécifique comme source approuvée. Sur les ordinateurs sur lesquels cette stratégie est déployée, les autorisations sont automatiquement accordées et l’utilisateur ne sera pas invité.
En tant que développeur, il est de votre responsabilité de s’assurer que votre application s’exécutera avec les autorisations appropriées. Si l’application demande des autorisations en dehors d’un fuseau pendant l’exécution, une exception de sécurité peut apparaître. Visual Studio vous permet de déboguer votre application dans la zone de sécurité cible et fournit de l’aide pour développer des applications sécurisées. Pour plus d’informations, consultez Déboguer des applications ClickOnce qui utilisent System.Deployment.Application.
Pour plus d’informations sur la sécurité de l’accès au code et ClickOnce, consultez Sécurité de l’accès au code pour les applications ClickOnce.
Certificats de signature de code
Pour publier une application à l’aide du déploiement ClickOnce, vous pouvez signer les manifestes d’application et de déploiement de l’application à l’aide d’une paire de clés publique/privée. Les outils de signature d’un manifeste sont disponibles sur la page Signature du Concepteur de projets. Pour plus d’informations, consultez page signature, Concepteur de projets.
Une fois les manifestes signés, les informations de l’éditeur basées sur la signature Authenticode s’affichent à l’utilisateur dans la boîte de dialogue Autorisations pendant l’installation, pour montrer à l’utilisateur que l’application provient d’une source approuvée.
Pour plus d’informations sur ClickOnce et les certificats, consultez ClickOnce et Authenticode.
Authentification basée sur des formulaires ASP.NET
Si vous souhaitez contrôler les déploiements auxquels chaque utilisateur peut accéder, vous ne devez pas activer l’accès anonyme aux applications ClickOnce déployées sur un serveur web. Au lieu de cela, vous pouvez autoriser les utilisateurs à accéder aux déploiements que vous avez installés en fonction de l’identité d’un utilisateur à l’aide de l’authentification Windows.
ClickOnce ne prend pas en charge l’authentification basée sur les formulaires ASP.NET, car elle utilise des cookies persistants ; ceux-ci présentent un risque de sécurité, car ils résident dans le cache du navigateur 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 n’est pas pris en charge.
Passer des arguments
Une autre considération de sécurité se produit 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 démarrer l’application :
http://servername.adatum.com/WindowsApp1.application?username=joeuser
Par défaut, les arguments de chaîne de requête sont désactivés. 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 obtenir des instructions détaillées sur l’activation de la transmission de chaînes de requête, consultez Comment : récupérer des informations de chaîne de requête dans une application ClickOnce en ligne.
Vous ne devez jamais transmettre d’arguments récupérés par le biais d’une chaîne de requête à une base de données ou à la ligne de commande sans vérifier que les arguments sont sûrs. Les arguments non sécurisés sont ceux qui incluent des caractères d’échappement de base de données ou de ligne de commande qui pourraient permettre à un utilisateur malveillant de manipuler votre application en exécutant des commandes arbitraires.
Remarque
Les arguments de chaîne de requête sont le seul moyen de passer des arguments à une application ClickOnce au démarrage. Vous ne pouvez pas passer d’arguments à une application ClickOnce à partir de la ligne de commande.
Déploiement d’assemblys obfuscatés
Visual Studio inclut la protection preEmptive gratuite - Dotfuscator Community, que vous pouvez utiliser pour protéger vos applications ClickOnce via l’obfuscation de code et les mesures de protection actives. Pour plus d’informations, consultez la section ClickOnce du Guide utilisateur de la communauté Dotfuscator.