Sdílet prostřednictvím


Übersicht über das Schreiben von sicherem Code

Aktualisiert: November 2007

In diesem Abschnitt erhalten Sie eine Übersicht über die verschiedenen Möglichkeiten, Code in das Sicherheitssystem zu integrieren.

Sicherheitsneutraler Code

Sicherheitsneutraler Code hat keine explizite Beziehung zum Sicherheitssystem. Er kann mit jeder erhaltenen Berechtigung ausgeführt werden. Wenn in einer Anwendung keine Sicherheitsausnahmen abgefangen werden, die geschützten Vorgängen (z. B. Verwenden von Dateien, Arbeiten im Netzwerk usw.) zugewiesen sind, kann dies zu unbehandelten Ausnahmen führen. Sicherheitsneutraler Code kann die Vorteile der .NET Framework-Sicherheitstechnologien dennoch nutzen.

Eine sicherheitsneutrale Bibliothek weist besondere Merkmale auf, mit denen Sie vertraut sein sollten. Angenommen, die Bibliothek stellt API-Elemente bereit, die Dateien verwenden oder nicht verwalteten Code aufrufen. Wenn der Code nicht über die entsprechende Berechtigung verfügt, kann er nicht wie gewünscht ausgeführt werden. Dies allein ist jedoch nicht ausreichend, darüber hinaus muss sämtlicher Anwendungscode, der diesen Code aufruft, ebenfalls über die entsprechende Berechtigung verfügen. Wenn der aufrufende Code nicht über die richtige Berechtigung verfügt, tritt beim Sicherheitsstackwalk für den Codezugriff eine SecurityException auf.

Anwendungscode, der keine wiederverwendbare Komponente darstellt

Für Code einer Anwendung, die nicht von anderem Code aufgerufen wird, gelten nur einfache Sicherheitsanforderungen, und es ist möglicherweise keine spezielle Codierung erforderlich. Beachten Sie jedoch, dass der Code von bösartigem Code aufgerufen werden kann. Der Zugriff von bösartigem Code auf Ressourcen kann zwar durch Codezugriffssicherheit verhindert werden, dennoch könnten dabei die Werte von Feldern oder Eigenschaften ausgelesen werden, die u. U. vertrauliche Daten enthalten.

Wenn der Code Benutzereingaben über das Internet oder aus anderen unzuverlässigen Ressourcen akzeptiert, müssen Sie diesen außerdem vor böswilligen Eingaben schützen.

Implementierung von verwalteten Wrappern für systemeigenen Code

In diesem Szenario werden normalerweise komfortable Funktionen in systemeigenem Code implementiert, der für verwalteten Code zugänglich gemacht werden soll. Verwaltete Wrapper können unkompliziert über Plattformaufruf oder über COM-Interop geschrieben werden. Dabei müssen Aufrufer der Wrapper für einen erfolgreichen Aufruf über Rechte für nicht verwalteten Code verfügen. Entsprechend der Standardrichtlinie bedeutet dies, dass aus einem Intranet oder dem Internet heruntergeladener Code nicht mit den Wrappern ausgeführt wird.

Anstatt allen Anwendungen, die diese Wrapper verwenden, Rechte für nicht verwalteten Code zu erteilen, empfiehlt es sich, diese Rechte nur dem Wrappercode zuzuweisen. Wenn die zugrunde liegenden Funktionen keine Ressourcen verfügbar machen und die Implementierung entsprechend "sicher" ist, muss der Wrapper lediglich seine Rechte bestätigen, sodass jeglicher Code durch den Wrapper Aufrufe vornehmen kann. Bei der Beteiligung von Ressourcen sollte der Sicherheitscode auf dieselbe Weise wie der Bibliothekscode geschrieben werden, der im nächsten Abschnitt behandelt wird. Da der Wrapper potenziell Aufrufer für diese Ressourcen verfügbar macht, muss die Sicherheit des systemeigenen Codes durch den Wrapper gründlich überprüft werden.

Bibliothekscode, der geschützte Ressourcen verfügbar macht

Die folgende Herangehensweise beim Schreiben von Sicherheitscode ist die effizienteste und daher, bei falscher Ausführung, gleichzeitig die risikoreichste: Die Bibliothek fungiert hier als Schnittstelle für anderen Code, der auf bestimmte Ressourcen zugreift, die auf andere Weise nicht zugänglich sind, so wie die .NET Framework-Klassen die Berechtigungen für die von ihnen verwendeten Ressourcen erzwingen. Bei jedem Verfügbarmachen einer Ressource muss der Code zunächst die der Ressource entsprechende Berechtigung fordern, d. h. eine Sicherheitsüberprüfung durchführen, und anschließend normalerweise seine Rechte zum Durchführen des eigentlichen Vorgangs bestätigen.

Siehe auch

Weitere Ressourcen

Richtlinien für das Schreiben von sicherem Code