Grundlagen der Codezugriffssicherheit

Jede Anwendung für die Common Language Runtime (also jede verwaltete Anwendung) muss mit dem Sicherheitssystem der Laufzeit interagieren. Wenn eine verwaltete Anwendung geladen wird, gewährt der Host ihr automatisch einen Satz von Berechtigungen. Diese Berechtigungen werden von den lokalen Sicherheitseinstellungen des Hosts oder der Sandbox bestimmt, in der die Anwendung enthalten ist. In Abhängigkeit von diesen Berechtigungen wird die Anwendung entweder ordnungsgemäß ausgeführt, oder es wird eine Sicherheitsausnahme generiert.

Der Standardhost für Desktopanwendungen ermöglicht, dass Code mit voller Vertrauenswürdigkeit ausgeführt wird. Wenn die Anwendung also für den Desktop konzipiert ist, verfügt sie über einen uneingeschränkten Berechtigungssatz. Andere Hosts oder Sandboxes stellen für Anwendungen einen eingeschränkten Berechtigungssatz bereit. Da sich der Berechtigungssatz von Host zu Host unterscheiden kann, müssen Sie die Anwendung so entwerfen, dass sie nur die vom Zielhost zugelassenen Berechtigungen verwendet.

Sie müssen mit den folgenden Konzepten der Codezugriffssicherheit vertraut sein, um effiziente Anwendungen für die Common Language Runtime schreiben zu können:

  • Schreiben von typsicherem Code: Um die Vorteile der Codezugriffssicherheit für Code nutzbar zu machen, müssen Sie einen Compiler verwenden, der nachweislich typsicheren Code generiert. Weitere Informationen finden Sie unter Schreiben von überprüfbar typsicherem Code.

  • Imperative und deklarative Syntax: Die Interaktion mit dem Sicherheitssystem der Common Language Runtime erfolgt durch imperative und deklarative Sicherheitsaufrufe. Deklarative Aufrufe werden mithilfe von Attributen vorgenommen, imperative Aufrufe werden mit neuen Instanzen von Klassen im Code ausgeführt. Einige Aufrufe können nur imperativ durchgeführt werden, andere können nur deklarativ durchgeführt werden. Es gibt jedoch auch Aufrufe, die auf beide Arten durchgeführt werden können. Weitere Informationen finden Sie unter Sicherheitssyntax.

  • Verwenden von sicheren Klassenbibliotheken: Klassenbibliotheken geben mithilfe der Codezugriffssicherheit an, welche Berechtigungen für den Zugriff darauf erforderlich sind. Sie müssen die erforderlichen Berechtigungen für den Zugriff auf sämtliche Klassenbibliotheken, die der Code verwendet, berücksichtigen.

  • Transparenter Code: Unter .NET Framework, Version 4 und höher müssen Sie zusätzlich zum Identifizieren bestimmter Berechtigungen auch festlegen, ob der Code sicherheitstransparent ausgeführt werden soll. Mit sicherheitstransparentem Code können keine Typen oder Member aufgerufen werden, die als sicherheitsrelevant identifiziert wurden. Diese Regel gilt sowohl für voll vertrauenswürdige Anwendungen als auch für teilweise vertrauenswürdige Anwendungen. Weitere Informationen finden Sie unter Verwenden von sicheren Klassenbibliotheken und Sicherheitstransparenter Code.

Siehe auch

Konzepte

Schreiben von überprüfbar typsicherem Code

Sicherheitssyntax

Anfordern von Berechtigungen

Verwenden von sicheren Klassenbibliotheken

Codezugriffssicherheit