Partager via


Vue d'ensemble de la sécurité dans les Windows Forms

Mise à jour : novembre 2007

Avant la version finale du .NET Framework, tout le code qui s'exécute sur l'ordinateur d'un utilisateur disposait des mêmes droits ou autorisations d'accéder aux ressources qu'un utilisateur de l'ordinateur possédait. Par exemple, si l'utilisateur était autorisé à accéder au système de fichiers, le code l'était également ; si l'utilisateur était autorisé à accéder à une base de données, le code l'était également. Même si ces droits ou autorisations peuvent être acceptables pour du code dans les exécutables que l'utilisateur a explicitement installé sur l'ordinateur local, ils ne peuvent pas l'être pour du code potentiellement nuisible provenant d'Internet ou de l'Intranet local. Ce code ne doit pas pouvoir accéder aux ressources de l'ordinateur de l'utilisateur sans autorisation.

Le .NET Framework introduit une infrastructure appelée Sécurité d'accès du code qui vous permet de faire la différence entre les autorisations, ou droits, du code et ceux de l'utilisateur. Par défaut, le code provenant d'Internet et d'Intranet peut s'exécuter uniquement avec ce qui est appelé une confiance partielle. La confiance partielle soumet une application à une série de restrictions : une application a notamment un accès restreint au disque dur local et ne peut pas exécuter du code non managé. Le .NET Framework contrôle les ressources auxquelles le code peut accéder en fonction de l'identité de ce code, c'est-à-dire, en fonction de sa provenance, de s'il possède un Assemblys avec nom fort, de s'il est signé avec un certificat, etc.

La technologie ClickOnce que vous utilisez pour déployer des applications Windows Forms, vous permet de développer facilement des applications qui s'exécutent avec une confiance partielle, totale ou partielle avec des autorisations élevées. ClickOnce offre des fonctionnalités telles que l'élévation d'autorisations et le déploiement d'autorisations de confiance afin que votre application puisse demander la confiance totale ou élever les autorisations de l'utilisateur local de manière responsable.

Présentation de la sécurité dans le .NET Framework

La sécurité d'accès du code permet de définir divers niveaux de confiance pour le code en fonction de son origine et d'autres aspects de son identité. Pour plus d'informations sur les preuves que le common language runtime utilise pour définir une stratégie de sécurité, consultez Preuve. La sécurité d'accès du code protège les systèmes informatiques contre le code nuisible et le code de confiance contre toute action pouvant compromettre la sécurité de manière intentionnelle ou accidentelle. Elle vous permet également de mieux contrôler les actions que votre application peut exécuter, étant donné que vous pouvez spécifier uniquement les autorisations requises pour votre application. La sécurité d'accès du code affecte tout le code managé qui vise le common language runtime, même si ce code n'effectue pas de contrôle de l'autorisation de sécurité d'accès du code. Pour plus d'informations sur la sécurité dans le .NET Framework, consultez Concepts fondamentaux sur la sécurité et Notions fondamentales de la sécurité d'accès du code.

Si l'utilisateur exécute un fichier exécutable Windows Forms directement à partir d'un serveur Web ou d'un partage de fichiers, le degré de confiance accordé à votre application dépend de l'emplacement du code et de la manière dont il est démarré. Lorsqu'une application est en cours d'exécution, elle est automatiquement évaluée et reçoit un jeu d'autorisations nommé du common language runtime. Par défaut, le code de l'ordinateur local reçoit le jeu d'autorisations Confiance totale, le code d'un réseau local reçoit le jeu d'autorisations Intranet local et celui d'Internet reçoit le jeu d'autorisations Internet.

Remarque :

Dans le Service Pack 1 et le Service Pack 2 du .NET Framework 1.0, le groupe de codes de la zone Internet reçoit le jeu d'autorisations Rien. Dans toutes les autres versions du .NET Framework, le groupe de codes de zone Internet reçoit le jeu d'autorisations Internet.

La rubrique Stratégie de sécurité par défaut répertorie les autorisations accordées par défaut dans chaque jeu d'autorisations. En fonction des autorisations reçues par l'application, il s'exécute correctement ou génère une exception de sécurité.

De nombreuses applications Windows Forms seront déployées à l'aide de ClickOnce. Les outils utilisés pour générer un déploiement ClickOnce ont des paramètres de sécurité différents de ceux mentionnés précédemment. Pour plus d'informations, consultez la discussion suivante :

Les autorisations accordées à votre application peuvent différer des autorisations par défaut, car la stratégie de sécurité peut être modifiée. Cela signifie que votre application peut avoir une autorisation pour un ordinateur spécifique et pas pour les autres.

Développement d'une application Windows Forms plus sécurisée

La sécurité est un élément essentiel dans toutes les étapes du développement d'une application. Commencez par examiner et suivre les Secure Coding Guidelines.

Ensuite, décidez de si votre application doit s'exécuter avec une confiance totale ou partielle. L'exécution de votre application avec une confiance totale facilite l'accès aux ressources sur l'ordinateur local, mais expose votre application et ses utilisateurs à des risques élevés en matière de sécurité si vous ne concevez pas et ne développez pas votre application en suivant scrupuleusement les instructions de la rubrique Secure Coding Guidelines. L'exécution de votre application avec une confiance partielle facilite le développement d'une application plus sécurisée et réduit considérablement les risques, mais nécessite une meilleure planification pour l'implémentation de certaines fonctionnalités.

Si vous choisissez la confiance partielle (c'est-à-dire, les jeux d'autorisations Internet ou Intranet local), choisissez comment votre application doit se comporter dans cet environnement. Windows Forms offre d'autres moyens, plus fiables, d'implémenter des fonctionnalités dans un environnement de niveau de confiance partiel. Certaines parties de votre application, telles que l'accès aux données, peuvent être conçues et écrites différemment pour les deux environnements de confiance partielle et de confiance totale. Certaines fonctionnalités Windows Forms, telles que les paramètres d'application, sont conçues pour être utilisées avec une confiance partielle. Pour plus d'informations, consultez Vue d'ensemble des paramètres d'application.

Si votre application nécessite des autorisations plus élevées que celles autorisées par la confiance partielle et si vous ne souhaitez pas l'exécuter avec une confiance totale, vous pouvez l'exécuter avec une confiance partielle en déclarant uniquement les autorisations supplémentaires dont vous avez besoin. Par exemple, si vous souhaitez exécuter votre application avec une confiance partielle mais que vous devez accorder son accès en lecture seule à un répertoire sur le système de fichiers de l'utilisateur, vous pouvez demander uniquement une FileIOPermission pour ce répertoire. Utilisée correctement, cette approche peut améliorer les fonctionnalités de votre application et réduire les risques de sécurité auxquels vos utilisateurs sont exposés.

Lorsque vous développez une application qui s'exécutera avec une confiance partielle, effectuez le suivi des autorisations que votre application doit exécuter et de celles qu'elle peut utiliser facultativement. Une fois toutes les autorisations identifiées, vous devez effectuer une demande d'autorisation déclarative au niveau de l'application. La demande d'autorisation indique au moment de l'exécution du .NET Framework quelles sont les autorisations requises par votre application et celles qui ne sont pas particulièrement requises. Pour plus d'informations sur la demande d'autorisations, consultez Demande d'autorisations et Demandes d'autorisation.

Lorsque vous demandez des autorisations facultatives, vous devez gérer les exceptions de sécurité qui seront générées si votre application exécute une action nécessitant des autorisations dont elle ne dispose pas. La gestion appropriée de l'SecurityException garantira que votre application peut continuer à fonctionner. Votre application peut utiliser l'exception pour déterminer si une fonctionnalité doit être désactivée pour l'utilisateur. Par exemple, une application peut désactiver l'option de menu Enregistrer si l'autorisation de fichier requise n'est pas accordée.

Il est parfois difficile de savoir si vous avez déclaré toutes les autorisations appropriées. Un appel de méthode apparemment anodin, par exemple, peut accéder au système de fichiers à un moment donné pendant son exécution. Si vous ne déployez pas votre application avec toutes les autorisations requises, elle peut être correctement testée lors du débogage sur le bureau, mais échouer lors du déploiement. Le Kit de développement .NET Framework 2.0 SDK et Visual Studio 2005 sont dotés d'outils permettant de calculer les autorisations requises par une application : il s'agit respectivement de l'outil de ligne de commande MT.exe et de la fonctionnalité Calculer les autorisations de Visual Studio.

La rubrique suivante décrit d'autres fonctionnalités de sécurité Windows Forms.

Rubrique

Description

Explique comment accéder aux fichiers et aux données dans un environnement de confiance partielle.

Explique comment accéder aux fonctionnalités d'impression dans un environnement de confiance partielle.

Explique comment manipuler des fenêtres, utiliser le Presse-papiers et appeler du code non managé dans un environnement de confiance partielle.

Déploiement d'une application avec les autorisations appropriées

La méthode la plus courante pour déployer une application Windows Forms sur un ordinateur client consiste à utiliser ClickOnce, une technologie de déploiement qui décrit tous les composants requis par votre application pour fonctionner. ClickOnce utilise des fichiers XML appelés manifestes pour décrire les assemblys et les fichiers qui composent votre application ainsi que les autorisations dont elle a besoin.

ClickOnce dispose de deux technologies permettant de demander des autorisations élevées sur un ordinateur client. Ces technologies reposent sur l'utilisation de certificats Authenticode. Les certificats permettent de garantir à vos utilisateurs que l'application provient d'une source fiable.

Le tableau suivant décrit ces technologies.

Technologie d'autorisation élevée

Description

Permission Elevation

Affiche une boîte de dialogue de sécurité à l'attention de l'utilisateur lors de la première exécution de votre application. La boîte de dialogue Permission Elevation indique à l'utilisateur qui a publié l'application, afin qu'il puisse décider de façon avertie de lui accorder un niveau de confiance plus élevé ou pas.

Déploiement d'une application approuvée

Implique qu'un administrateur système effectue une installation unique du certificat Authenticode d'un éditeur sur un ordinateur client. À partir de ce moment, toutes applications signées avec le certificat sont considérées comme approuvées et peuvent être exécutées avec une confiance totale sur l'ordinateur local sans demander de nouvelle confirmation.

Le choix de la technologie dépend de votre environnement de déploiement. Pour plus d'informations, consultez Choix d'une stratégie de déploiement ClickOnce.

Par défaut, les applications ClickOnce déployées à l'aide des outils de Visual Studio ou du Kit de développement .NET Framework 2.0 SDK (Mage.exe et MageUI.exe) sont configurées pour être exécutées sur un ordinateur client qui dispose de la Confiance totale. Si vous déployez votre application à l'aide de la confiance partielle ou en utilisant uniquement des autorisations supplémentaires, vous devez modifier ce paramètre par défaut. Pour cela, vous pouvez utiliser l'outil MageUI.exe de Visual Studio ou du Kit de développement .NET Framework 2.0 SDK lors de la configuration de votre déploiement. Pour plus d'informations sur l'utilisation de MageUI.exe, consultez Procédure pas à pas : déploiement d'une application ClickOnce à partir de la ligne de commande.

Pour plus d'informations sur les aspects relatifs à la sécurité de ClickOnce et l'élévation d'autorisations, consultez Déploiement et sécurité ClickOnce. Pour plus d'informations sur le déploiement d'une application approuvée, consultez Vue d'ensemble du déploiement d'applications approuvées.

Test de l'application

Si vous avez déployé votre application Windows Forms à l'aide de Visual Studio, vous pouvez activer le débogage avec une confiance partielle ou un jeu d'autorisations restreintes depuis l'environnement de développement.

Voir aussi

Concepts

Notions fondamentales de la sécurité d'accès du code

Vue d'ensemble du déploiement ClickOnce

Vue d'ensemble du déploiement d'applications approuvées

Référence

Outil Manifest Generation and Editing (Mage.exe)

Manifest Generation and Editing, outil du client graphique (MageUI.exe)

Autres ressources

Sécurité des Windows Forms