Partager via


Problèmes de sécurité dans Reflection Emit

Cette rubrique décrit les problèmes de sécurité dont il faut être conscient lors de la création d'assemblys dynamiques en utilisant Reflection Emit. Certains scénarios nécessitent des autorisations spécifiques. D'autres nécessitent des autorisations à établir pour le code généré. Dans la description suivante, le terme « appelant » fait référence au créateur des assemblys dynamiques et/ou des modules dynamiques.

Scénarios nécessitant des autorisations spécifiques

Le runtime requiert que l'assembly de création possède l'autorisation ReflectionPermissionFlag.ReflectionEmit pour appeler certaines opérations sur des objets AssemblyBuilder et des objets ModuleBuilder. Reflection Emit utilisant Reflection, l'assembly de création peut aussi avoir besoin d'une autorisation pour utiliser Reflection.

Établissement d'autorisations pour le code généré

  • Un appelant a besoin des autorisations de fichier appropriées pour rendre un assembly dynamique persistant.
  • Les appelants avec l'autorisation SecurityPermissionFlag.ControlEvidence peuvent fournir la preuve pour le code généré. Cette preuve est mappée via une stratégie pour déterminer les autorisations accordées.
  • N'importe quel appelant peut fournir une preuve nulle, auquel cas l'assembly obtient le jeu d'autorisations de l'appelant. Cela garantit que le code généré ne possède pas plus d'autorisations que son appelant.
  • Après qu'un assembly dynamique a été rendu persistant sur le disque, les chargements suivants obtiennent des autorisations en fonction des stratégies associées à l'emplacement où l'assembly a été rendu persistant. Autrement dit, l'assembly est considéré comme n'importe quel autre assembly chargé à partir d'un disque.
  • Le code généré par des appelants d'un niveau de confiance moyen est toujours vérifié. En particulier, le runtime vérifie toujours que le code ne possède pas l'autorisation SecurityPermissionFlag.SkipVerification. Les appelants d'un niveau de confiance suffisant peuvent ignorer la vérification ou demander que le code généré soit vérifié.

Voir aussi

Émission d'assemblys dynamiques