Sécuriser des applications ClickOnce

Les applications ClickOnce 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. Pour cette raison, il est important de comprendre les implications de la sécurité d’accès du code afin d’écrire vos applications ClickOnce en conséquence. 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.

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. 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. 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é. Pour cette raison, nous vous recommandons de signer vos manifestes d'application et de déploiement pour aider à sécuriser vos applications.

Zones

Les applications déployées à l’aide de la technologie ClickOnce sont restreintes à un ensemble d’autorisations et d’actions défini 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écution à partir du Web Zone Internet
Installation à partir du Web Zone Internet
Installation à partir du partage de fichier réseau Zone Intranet local
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. Pour plus d'informations, consultez 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. Pour plus d'informations, consultez How to: Add a Trusted Publisher to a Client Computer for ClickOnce Applications.

Notes

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 du code

Les autorisations d’une application sont déterminées par les paramètres figurant dans l’élément <Élément> trustInfo du manifeste de l’application. Visual Studio génère automatiquement ces informations selon les paramètres figurant sur la page de propriété Sécurité du projet. Seules les autorisations spécifiques demandées par une application ClickOnce lui sont accordées. 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. Lors du développement de votre application ClickOnce, assurez-vous de ne demander que 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 votre application à une confiance partielle. Pour plus d’informations, consultez Guide pratique pour définir une zone de sécurité pour une application ClickOnce. Si votre application requiert 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.

Notes

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.

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

En tant que développeur, vous devez garantir que votre application s'exécutera avec les autorisations appropriées. 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. 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. Pour plus d’informations, consultez Déboguer des applications ClickOnce qui utilisent System.Deployment.Application.

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.

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 en utilisant une paire de clés publique/privée. Les outils utilisés pour la signature d'un manifeste sont disponibles sur la page Signature du Concepteur de projets. Pour plus d'informations, consultez Signing Page, Project Designer.

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.

Pour plus d’informations sur ClickOnce et sur les certificats, consultez ClickOnce and Authenticode.

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 à l'aide de l'authentification Windows.

ClickOnce 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 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 considération supplémentaire en matière de sécurité doit être prise en compte si vous devez transférer des arguments dans une application ClickOnce. ClickOnce permet aux développeurs de fournir une chaîne de requêtes 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://servername.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 obtenir des instructions détaillées sur l’activation du passage de chaînes de requête, consultez Guide pratique pour récupérer les informations de chaîne de requête dans une application ClickOnce en ligne.

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.

Notes

Les arguments de chaîne de requêtes constituent la seule manière de transférer des arguments à une application ClickOnce lors du lancement. Vous ne pouvez pas transférer des arguments à une application ClickOnce à partir de la ligne de commande.

Déploiement d’assemblys obfusqués

Visual Studio inclut la version gratuite de PreEmptive Protection - Dotfuscator Community, que vous pouvez utiliser pour protéger vos applications ClickOnce via l’obscurcissement du code et des mesures de protection active. Pour plus d’informations, consultez la section ClickOnce du Guide de l’utilisateur de Dotfuscator Community.