Grundlagen der Codezugriffssicherheit
Jede Anwendung für die Common Language Runtime muss mit dem Sicherheitssystem der Laufzeit interagieren. Bei der Ausführung einer Anwendung wird diese automatisch ausgewertet, und ihr wird von der Laufzeit ein Berechtigungssatz zugewiesen. In Abhängigkeit von den empfangenen Berechtigungen wird die Anwendung entweder ordnungsgemäß ausgeführt, oder es wird eine Sicherheitsausnahme generiert. Die lokalen Sicherheitseinstellungen für einen bestimmten Computer entscheiden schließlich darüber, welche Berechtigungen Code zugewiesen werden. Da diese Einstellungen auf jedem Computer unterschiedlich ausfallen können, können Sie nie genau wissen, ob der Code die erforderlichen Berechtigungen für die Ausführung erhält. Dies macht den Unterschied zur nicht verwalteten Entwicklung aus, bei der Sie sich nicht um die Berechtigungen für die Ausführung von Code kümmern müssen.
Jeder Entwickler muss 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 ausgeführt werden, während andere nur deklarativ ausgeführt werden können. Einige Aufrufe können sowohl imperativ als auch deklarativ erfolgen. Weitere Informationen finden Sie unter Sicherheitssyntax.
Anfordern von Berechtigungen für den Code: Anforderungen werden auf den Gültigkeitsbereich einer Assembly angewendet. Dabei informiert der Code die Common Language Runtime über die Berechtigungen, die entweder für die Ausführung benötigt oder ausdrücklich nicht gewünscht werden. Wenn der Code in den Speicher geladen wird, werden die Sicherheitsanforderungen von der Laufzeit ausgewertet. Anforderungen können die Laufzeit nicht dahin gehend beeinflussen, dass dem Code mehr Berechtigungen erteilt werden, als dies ohne die Anforderung der Fall gewesen wäre. Mithilfe von Anforderungen informiert der Code die Laufzeit jedoch über die benötigten Berechtigungen für die Ausführung. Weitere Informationen finden Sie unter Anfordern von Berechtigungen.
Verwenden von sicheren Klassenbibliotheken: Die Klassenbibliotheken geben mithilfe der Codezugriffssicherheit an, welche Berechtigungen für den Zugriff auf sie erforderlich sind. Sie müssen die erforderlichen Berechtigungen für den Zugriff auf sämtliche Klassenbibliotheken, die der Code verwendet, berücksichtigen und die entsprechenden Anforderungen im Code vornehmen. Weitere Informationen finden Sie unter Verwenden von sicheren Klassenbibliotheken.
Siehe auch
Konzepte
Schreiben von überprüfbar typsicherem Code
Sicherheitssyntax
Anfordern von Berechtigungen
Verwenden von sicheren Klassenbibliotheken