Freigeben über


Sicherheitsaspekte bei der Reflektionsausgabe

In diesem Thema werden Sicherheitsfragen abgehandelt, die beim Erstellen von dynamischen Assemblys mithilfe der Reflektionsausgabe beachtet werden müssen. Einige Szenarien erfordern bestimmte Berechtigungen. Andere erfordern Berechtigungen, um für generierten Code eingerichtet zu werden. In der folgenden Beschreibung bezieht sich der Begriff "Aufrufer" auf den Ersteller der dynamischen Assemblys und/oder der dynamischen Module.

Szenarien, die bestimmte Berechtigungen erfordern

Die Common Language Runtime erfordert, dass die erstellende Assembly die ReflectionPermissionFlag.ReflectionEmit-Berechtigung besitzen muss, um bestimmte Operationen an AssemblyBuilder-Objekten und ModuleBuilder-Objekten ausführen zu können. Da die Reflektionsausgabe Reflection verwendet, kann die erstellende Assembly ebenfalls eine Berechtigung für die Verwendung von Reflection anfordern.

Einrichten von Berechtigungen für generierten Code

  • Ein Aufrufer benötigt die entsprechenden Dateiberechtigungen, um eine dynamische Assembly zu speichern.

  • Aufrufer mit der SecurityPermissionFlag.ControlEvidence-Berechtigung können Beweise für den generierten Code bereitstellen. Diese Beweise werden über eine Richtlinie zugeordnet, um die gewährten Berechtigungen festzulegen.

  • Jeder Anrufer kann auch den NULL-Beweis zur Verfügung stellen. In diesem Fall erhält die Assembly den Berechtigungssatz des Aufrufers. Dadurch wird sichergestellt, dass der generierte Code nicht über mehr Berechtigungen verfügt als sein Aufrufer.

  • Nach dem Speichern einer dynamischen Assembly auf der Festplatte werden nachfolgende Ladezugriffe entsprechend den Richtlinien gewährt, die dem Speicherort der Assembly zugeordnet sind. Das heißt, dass die Assembly wie jede andere von der Festplatte geladene Assembly behandelt wird.

  • Code, der von nur teilweise vertrauenswürdigen Aufrufern generiert wurde, wird immer überprüft. Insbesondere überprüft die Common Language Runtime immer Code, der nicht die SecurityPermissionFlag.SkipVerification-Berechtigung besitzt. Vollständig vertrauenswürdige Aufrufer können die Überprüfung entweder überspringen oder die Überprüfung des generierten Codes anfordern.

Siehe auch

Weitere Ressourcen

Ausgeben von dynamischen Methoden und Assemblys