Sécurité d'accès du code pour les applications ClickOnce

Mise à jour : novembre 2007

Les applications ClickOnce sont basées sur le .NET Framework et sont soumises à des contraintes de sécurité d'accès du code. Pour cette raison, il est important de comprendre les implications de la sécurité d'accès du code et d'écrire vos applications ClickOnce en conséquence.

La sécurité d'accès du code est un mécanisme du .NET Framework qui permet de limiter l'accès du code aux ressources et aux opérations protégées. Vous devez toujours configurer les autorisations de sécurité d'accès du code pour votre application ClickOnce afin d'inclure uniquement les autorisations requises par votre application. Visual Studio fournit les outils nécessaires pour déterminer et configurer le jeu d'autorisations de votre application.

Par défaut, une application ClickOnce reçoit des autorisations Confiance totale lorsqu'elle est installée ou exécutée sur un ordinateur client. Même s'il faut parfois y avoir recours, l'octroi d'autorisations Confiance totale est plutôt déconseillé pour deux raisons importantes :

  • Une application possédant des autorisations Confiance totale dispose d'un accès illimité aux ressources, telles que le système de fichiers et le Registre. Cela signifie que votre application, ainsi que le système de l'utilisateur final, peuvent être potentiellement exploités par du code malveillant.

  • Lorsqu'une application requiert des autorisations Confiance totale, l'utilisateur final est invité à lui accorder des autorisations. Cela signifie qu'elle n'est pas réellement une application ClickOnce et que l'invite peut porter à confusion pour les utilisateurs moins expérimentés.

    Remarque :

    Lors de l'installation d'une application à partir d'un média amovible, tel qu'un CD-ROM, l'utilisateur ne reçoit pas d'invite. En outre, un administrateur réseau peut configurer la stratégie réseau afin que les utilisateurs ne reçoivent pas d'invite lors de l'installation d'une application provenant d'une source fiable. Pour plus d'informations, consultez Vue d'ensemble du déploiement d'applications approuvées.

Pour ces raisons, veillez à toujours modifier les autorisations de sécurité d'accès du code de votre application pour n'inclure que les autorisations requises par l'application.

Vous devez toujours configurer votre application ClickOnce de sorte qu'elle ne demande que les autorisations de sécurité d'accès du code réellement nécessaires. Vous pouvez configurer des autorisations de protection dans la page Sécurité du Concepteur de projets.

La page Sécurité du Concepteur de projets contient une case à cocher Activer les paramètres de sécurité ClickOnce. Lorsque cette case à cocher est activée, les demandes d'autorisation de sécurité sont ajoutées au manifeste de déploiement de votre application. Au moment de l'installation, l'utilisateur est invité à accorder des autorisations si les autorisations demandées dépassent les autorisations par défaut de la zone à partir de laquelle l'application est déployée. Pour plus d'informations, consultez Comment : activer les paramètres de sécurité ClickOnce.

Des niveaux d'autorisations différents sont accordés, sans demande de confirmation, à des applications déployées à partir d'emplacements différents. Par exemple, lorsqu'une application est déployée à partir d'Internet, elle reçoit un jeu d'autorisations très restrictif. À partir d'un Intranet local, elle reçoit davantage d'autorisations et lorsqu'elle est installée à partir d'un CD-ROM, elle reçoit des autorisations Confiance totale.

Pour configurer des autorisations, vous pouvez commencer par sélectionner une zone de sécurité dans la liste Zone de la page Sécurité. Si vous comptez déployer votre application à partir de plusieurs zones, sélectionnez la zone possédant le moins d'autorisations. Si vous ne souhaitez pas utiliser d'autorisations prédéfinies et ajouter les autorisations nécessaires à votre application une par une, sélectionnez la zone Personnalisée.

Lorsqu'une zone est sélectionnée, la liste Autorisations est mise à jour pour afficher les autorisations par défaut de cette zone ; les autorisations incluses sont indiquées par une coche verte. Pour plus d'informations, consultez Comment : définir une zone de sécurité pour une application ClickOnce.

Pour limiter davantage les autorisations, vous pouvez sélectionner un jeu d'autorisations et modifier ses propriétés. Par exemple, si votre application doit afficher une boîte de dialogue Ouvrir, le jeu FileDialogPermission accorde le droit d'afficher des boîtes de dialogue. Par défaut, ce jeu d'autorisations autorise à la fois les boîtes de dialogue Ouvrir et Enregistrer. Pour modifier ce paramétrage, cliquez sur le jeu FileDialogPermission, puis sur Propriétés afin d'ouvrir une boîte de dialogue Paramètres des autorisations et affectez la valeur Boîte de dialogue Ouvrir uniquement à l'autorisation. Pour plus d'informations, consultez Comment : définir des autorisations personnalisées pour une application ClickOnce.

Remarque :

Les propriétés qui peuvent être définies varient selon le jeu d'autorisations ; tous les jeux d'autorisations ne possèdent pas des propriétés configurables.

Vous pouvez également exclure les jeux d'autorisations dont vous n'avez pas besoin ou activer les autorisations qui ne font pas partie des autorisations par défaut d'une zone. Pour ce faire, choisissez une valeur dans la liste Paramètre du jeu d'autorisations. Les autorisations qui ont été modifiées sont affichées en texte gras. Si une autorisation est activée et ne fait pas partie des paramètres par défaut de la zone, une icône d'informations est ajoutée à côté de la coche Incluse.

Remarque :

L'activation d'autorisations qui ne font pas partie des paramètres par défaut d'une zone entraîne l'affichage de l'invite décrite ci-dessus, à l'intention de l'utilisateur. Lorsque vous activez des autorisations supplémentaires, vous devez toujours modifier le jeu d'autorisations afin de n'inclure que les autorisations dont vous avez réellement besoin.

Pour configurer efficacement les autorisations de sécurité, il peut être utile de savoir exactement de quelles autorisations votre application a besoin. Vous pouvez utiliser l'outil Permission Calculator, disponible sur la page Sécurité, pour analyser votre code et déterminer les autorisations exactes nécessaires à votre application.

Remarque :

Il existe des restrictions à l'outil Permission Calculator. Il exécute une analyse statique du code et ne peut pas déterminer les autorisations requises pour le code à liaison tardive ou pour les assemblys chargés de manière dynamique. De plus, si vous avez conçu votre application pour qu'elle modifie dynamiquement ses demandes d'autorisations quand elle s'exécute dans un environnement disposant d'autorisations moindres, l'outil signale les autorisations maximales requises.

Lorsque l'outil a analysé votre application, tous les jeux d'autorisations requis prennent l'état Activé et sont affichés en texte gras. Si une autorisation activée ne fait pas partie des paramètres par défaut de la zone, elle est également signalée par une icône d'avertissement. Si vous souhaitez que l'invite ne s'affiche pas pour l'utilisateur final, lisez ces informations pour savoir s'il existe un moyen de modifier votre code afin que l'autorisation ne soit plus requise.

Pour plus d'informations, consultez Comment : déterminer les autorisations pour une application ClickOnce.

En tant que développeur, vous utilisez très probablement votre ordinateur de développement avec les autorisations Confiance totale. Par conséquent, vous ne constaterez pas les mêmes exceptions de sécurité lors du débogage de l'application que les utilisateurs peuvent voir apparaître en cas d'exécution avec des autorisations restreintes.

Pour intercepter ces exceptions, vous devez déboguer l'application avec les mêmes autorisations que l'utilisateur final. Le débogage avec des autorisations restreintes peut être activé dans la page Sécurité du Concepteur de projets.

Lorsque vous déboguez une application avec des autorisations restreintes, des exceptions sont levées pour toute demande de sécurité de code non activée dans la page Sécurité. Un programme d'assistance de l'exception s'affiche pour fournir des suggestions relatives à la modification de votre code afin d'empêcher l'exception.

En outre, lorsque vous écrivez du code, la fonctionnalité IntelliSense de l'éditeur de code grise tous les membres qui ne sont pas inclus dans les autorisations de sécurité que vous avez configurées.

Pour plus d'informations, consultez Comment : déboguer une application ClickOnce avec des autorisations restreintes.

Visual Studio fournit les types de projets suivants pour les applications Windows Presentation Foundation (WPF) :

  • Application de fenêtres WPF

  • Application de navigateur Web WPF

  • Bibliothèque de contrôles personnalisés WPF

  • Bibliothèque de services WPF

Parmi ces types de projets, seules les applications de navigateur Web WPF sont hébergées dans un navigateur Web et requièrent des paramètres spéciaux de déploiement et de sécurité. Les paramètres de sécurité par défaut pour ces applications sont :

  • Activer les paramètres de sécurité ClickOnce

  • Il s'agit d'une application de confiance partielle

  • Zone Internet (avec le jeu d'autorisations par défaut pour les applications de navigateur Web WPF sélectionnées)

Dans la boîte de dialogue Paramètres de sécurité avancés, la case à cocher Déboguer cette application à l'aide du groupe d'autorisations sélectionné est sélectionnée et désactivée, car le débogage par zone ne peut pas être désactivé pour les applications hébergées dans un navigateur.

Lorsque les applications de navigateur Web WPF sont déployées à l'aide de ClickOnce, elles demandent un jeu d'autorisations spécifique (stocké dans le fichier appname.exe.manifest). Il s'agit des autorisations par défaut pour le jeu d'autorisations de la zone Internet de sécurité d'accès du code, auxquelles viennent s'ajouter les deux suivantes :

WebBrowserPermission

MediaPermission

Si vous accordez des autorisations non définies par défaut, Visual Studio émettra un avertissement indiquant que l'application est configurée pour demander une autorisation non définie par défaut. L'installation échouera sauf si la stratégie de sécurité a déjà été placée sur l'ordinateur cible.

Ajouts de la communauté

Afficher: