Partager via


Vue d’ensemble de la sécurité dans Windows Forms

Important

Ce contenu s’applique uniquement au .NET Framework, sauf indication contraire.

Avant la publication du .NET Framework, tout le code exécuté sur l’ordinateur d’un utilisateur dispose des mêmes droits ou autorisations pour accéder aux ressources qu’un utilisateur de l’ordinateur avait. Par exemple, si l’utilisateur a été autorisé à accéder au système de fichiers, le code a été autorisé à accéder au système de fichiers ; si l’utilisateur a été autorisé à accéder à une base de données, le code a été autorisé à accéder à cette base de données. Bien que ces droits ou autorisations puissent être acceptables pour le code dans les exécutables que l’utilisateur a installé explicitement sur l’ordinateur local, ils peuvent ne pas être acceptables pour le code potentiellement malveillant provenant d’Internet ou d’un intranet local. Ce code ne doit pas être en mesure d’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 au code qui vous permet de différencier les autorisations, ou droits, que le code a des droits que l’utilisateur possède. Par défaut, le code provenant d’Internet et de l’Intranet ne peut s’exécuter que dans ce qu’on appelle une approbation partielle. L’approbation partielle soumet une application à une série de restrictions : entre autres, une application est limitée à l’accès au disque dur local et ne peut pas exécuter de code non managé. Le .NET Framework contrôle les ressources auxquelles le code est autorisé à accéder en fonction de l’identité de ce code : à partir duquel il provient, qu’il dispose d’un Strong-Named Assemblys, qu’il soit signé avec un certificat, et ainsi de suite.

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

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

La sécurité de l’accès au code permet au code d’être approuvé à différents degrés, selon l’origine du code et sur d’autres aspects de l’identité du code. Pour plus d’informations sur la preuve que le Common Language Runtime utilise pour déterminer la stratégie de sécurité, consultez Preuve. Il permet de protéger les systèmes informatiques contre le code malveillant et de protéger le code approuvé contre la sécurité intentionnellement ou accidentellement compromise. La sécurité de l’accès au code vous donne également davantage de contrôle sur les actions que votre application peut effectuer, car vous ne pouvez spécifier que ces autorisations dont vous avez besoin pour votre application. La sécurité de l’accès au code affecte tout le code managé qui cible le Common Language Runtime, même si ce code n’effectue pas de vérification d’autorisation de sécurité d’accès au code unique. Pour plus d’informations sur la sécurité dans .NET Framework, consultez Concepts de sécurité clés et Concepts de base de la sécurité de l’accès au 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 façon dont il est démarré. Lorsqu’une application s’exécute, elle est évaluée automatiquement et reçoit un jeu d’autorisations nommé à partir 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 le code provenant d'Internet reçoit le jeu d’autorisations Internet.

Remarque

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

Les autorisations par défaut accordées dans chacun de ces jeux d’autorisations sont répertoriées dans la rubrique Stratégie de sécurité par défaut . Selon les autorisations reçues par l’application, elle 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 valeurs de sécurité par défaut différentes de celles décrites précédemment. Pour plus d’informations, consultez la discussion suivante.

Les autorisations réelles accordées à votre application peuvent être différentes des valeurs par défaut, car la stratégie de sécurité peut être modifiée ; cela signifie que votre application peut avoir l’autorisation sur un ordinateur, mais pas sur un autre.

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

La sécurité est importante dans toutes les étapes de développement d’applications. Commencez par passer en revue et en suivant les instructions de codage sécurisé.

Ensuite, déterminez si votre application doit s’exécuter en confiance totale ou si elle doit s’exécuter en confiance partielle. L’exécution de votre application en toute confiance facilite l’accès aux ressources sur l’ordinateur local, mais expose votre application et ses utilisateurs à des risques de sécurité élevés si vous ne concevez pas et développez votre application strictement en fonction de la rubrique Instructions de codage sécurisé. L’exécution de votre application en confiance partielle facilite le développement d’une application plus sécurisée et réduit les risques, mais nécessite davantage de planification pour implémenter certaines fonctionnalités.

Si vous choisissez une approbation partielle (autrement dit, les ensembles d’autorisations Internet ou Intranet local), décidez de la façon dont vous souhaitez que votre application se comporte dans cet environnement. Windows Forms fournit d’autres méthodes plus sécurisées pour implémenter des fonctionnalités dans un environnement semi-approuvé. Certaines parties de votre application, telles que l’accès aux données, peuvent être conçues et écrites différemment pour les environnements de confiance partielle et de confiance totale. Certaines fonctionnalités Windows Forms, telles que les paramètres d’application, sont conçues pour fonctionner en confiance partielle. Pour plus d’informations, consultez Vue d’ensemble des paramètres d’application.

Si votre application a besoin de plus d’autorisations que d’autorisations d’approbation partielle, mais que vous ne souhaitez pas exécuter en confiance totale, vous pouvez exécuter en confiance partielle tout en affirmant uniquement ces autorisations supplémentaires dont vous avez besoin. Par exemple, si vous souhaitez exécuter en confiance partielle, mais que vous devez accorder à votre application un accès en lecture seule à un répertoire sur le système de fichiers de l’utilisateur, vous pouvez demander FileIOPermission uniquement ce répertoire. Utilisée correctement, cette approche peut donner à votre application des fonctionnalités accrues et réduire les risques de sécurité pour vos utilisateurs.

Lorsque vous développez une application qui s’exécutera en confiance partielle, suivez les autorisations que votre application doit exécuter et les autorisations que votre application peut éventuellement utiliser. Lorsque toutes les autorisations sont connues, vous devez effectuer une demande déclarative d’autorisation au niveau de l’application. La demande d’autorisations informe l'environnement d'exécution du .NET Framework des autorisations dont votre application a besoin et celles dont elle ne veut pas spécifiquement. Pour plus d’informations sur la demande d’autorisations, consultez Demande d’autorisations.

Lorsque vous demandez des autorisations facultatives, vous devez gérer les exceptions de sécurité qui seront générées si votre application effectue une action qui nécessite des autorisations qui ne lui sont pas accordées. Le traitement approprié de SecurityException garantira que votre application puisse 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.

Parfois, il est difficile de savoir si vous avez affirmé toutes les autorisations appropriées. Un appel de méthode qui semble innocue sur la surface, 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 testée correctement lorsque vous la déboguez sur votre ordinateur, mais échouer lors du déploiement. Le KIT SDK .NET Framework 2.0 et Visual Studio 2005 contiennent des outils pour calculer les autorisations dont une application a besoin : l’outil en ligne de commande MT.exe et la fonctionnalité Calculer les autorisations de Visual Studio, respectivement.

Les rubriques suivantes décrivent des fonctionnalités de sécurité Windows Forms supplémentaires.

Sujet Descriptif
- Accès aux fichiers et aux données plus sécurisés dans Windows Forms Décrit comment accéder aux fichiers et aux données dans un environnement d’approbation partielle.
- Impression plus sécurisée dans Windows Forms Décrit comment accéder aux fonctionnalités d’impression dans un environnement d’approbation partielle.
- Considérations de sécurité supplémentaires dans Windows Forms Décrit l’exécution d’une manipulation de fenêtre, l’utilisation du Presse-papiers et l’exécution d’appels à du code non managé dans un environnement d’approbation partielle.

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

Le moyen le plus courant de déployer une application Windows Forms sur un ordinateur client est avec ClickOnce, une technologie de déploiement qui décrit tous les composants dont votre application a besoin pour s’exécuter. 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 votre application a besoin.

ClickOnce dispose de deux technologies pour demander des autorisations élevées sur un ordinateur client. Les deux technologies s’appuient sur l’utilisation de certificats Authenticode. Les certificats fournissent une certaine assurance à vos utilisateurs que l’application provient d’une source approuvée.

Le tableau suivant décrit ces technologies.

Technologie d'autorisation à privilèges élevés Descriptif
Élévation d’autorisations Invite l’utilisateur avec une boîte de dialogue de sécurité la première fois que votre application s’exécute. La boîte de dialogue Élévation d’autorisations informe l’utilisateur de qui a publié l’application, afin que l’utilisateur puisse prendre une décision éclairée sur l’octroi d’une approbation supplémentaire
Déploiement d’applications approuvées Implique un administrateur système effectuant une installation unique du certificat Authenticode d’un éditeur sur un ordinateur client. À partir de ce stade, toutes les applications signées avec le certificat sont considérées comme approuvées et peuvent s’exécuter en toute confiance sur l’ordinateur local sans invite supplémentaire.

La technologie que vous choisissez dépend de votre environnement de déploiement. Pour plus d’informations, consultez Choisir une stratégie de déploiement ClickOnce.

Par défaut, les applications ClickOnce déployées à l’aide de Visual Studio ou des outils sdk .NET Framework (Mage.exe et MageUI.exe) sont configurées pour s’exécuter sur un ordinateur client disposant d’une confiance totale. Si vous déployez votre application à l’aide d’une approbation partielle ou en utilisant uniquement des autorisations supplémentaires, vous devrez modifier cette valeur par défaut. Vous pouvez le faire avec Visual Studio ou l’outil sdk .NET Framework MageUI.exe lorsque vous configurez votre déploiement. Pour plus d’informations sur l’utilisation de MageUI.exe, consultez Procédure pas à pas : déploiement manuel d’une application ClickOnce. Découvrez également comment : définir des autorisations personnalisées pour une application ClickOnce ou comment : définir des autorisations personnalisées pour une application ClickOnce.

Pour plus d’informations sur les aspects de sécurité de ClickOnce et d’élévation d’autorisations, consultez Sécurisation des applications ClickOnce. Pour plus d’informations sur le déploiement d’applications approuvées, 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 dans un contexte de confiance partielle ou avec un ensemble d’autorisations restreint à partir de l’environnement de développement. Découvrez également comment : déboguer une application ClickOnce avec des autorisations restreintes.

Voir aussi