Beweisbasierte Sicherheitsrichtlinien und Codezugriffssicherheit sind äußerst effiziente Verfahren für die Implementierung von Sicherheit.
Für den Großteil des Anwendungscodes kann einfach die von .NET Framework implementierte Infrastruktur verwendet werden. In einigen Fällen ist jedoch zusätzliche anwendungsspezifische Sicherheit erforderlich, die entweder durch die Erweiterung des Sicherheitssystems oder den Einsatz neuer Ad-Hoc-Methoden erreicht werden kann.
Mithilfe der von .NET Framework durchgesetzten Berechtigungen und sonstigen durchgesetzten Berechtigungen im Code sollten Sie Hindernisse einrichten, um zu vermeiden, dass bösartiger Code unberechtigt Daten abruft oder andere unerwünschte Aktionen durchführt.
Darüber hinaus müssen Sie für sämtliche erwarteten Szenarien, in denen mit vertrauenswürdigem Code gearbeitet wird, ein ausgewogenes Verhältnis zwischen Sicherheit und Verwendbarkeit erzielen.
In diesem Abschnitt erhalten Sie eine Übersicht über die verschiedenen Möglichkeiten, Code in das Sicherheitssystem zu integrieren.
Hinweis
|
|
In .NET Framework 4 wurden erhebliche Änderungen am Sicherheitsmodell und an der Terminologie von .NET Framework vorgenommen. Weitere Informationen zu diesen Änderungen finden Sie unter Änderungen der Sicherheit in .NET Framework.
|
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.
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.
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.
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.
|
Titel
|
Beschreibung
|
|
Gewusst wie: Ausführen von teilweise vertrauenswürdigem Code in einer Sandbox
|
Erklärt, wie eine teilweise vertrauenswürdige Anwendung in einer beschränkten Sicherheitsumgebung, in der die gewährten Codezugriffsberechtigungen eingeschränkt sind, ausgeführt wird.
|
|
Sichern von Statusdaten
|
Beschreibt, wie private Member geschützt werden.
|
|
Sichern des Methodenzugriffs
|
Beschreibt, wie Methoden vor dem Zugriff durch teilweise vertrauenswürdigen Code geschützt werden.
|
|
Sichern von Wrappercode
|
Erläutert Sicherheitsaspekte für Code, der anderen Code umschließt.
|
|
Sicherheit und schreibgeschützte öffentliche Arrayfelder
|
Beschreibt Sicherheitsaspekte für Code, der öffentliche schreibgeschützte Arrays in .NET Framework-Bibliotheken verwendet.
|
|
Sichern der Ausnahmebehandlung
|
Behandelt Sicherheitsaspekte bei der Behandlung von Ausnahmen.
|
|
Sicherheit und Benutzereingaben
|
Behandelt Sicherheitsaspekte bei Anwendungen, die Benutzereingaben akzeptieren.
|
|
Überlegungen zu Sicherheit und Remoting
|
Behandelt Sicherheitsaspekte bei Anwendungen, die über Anwendungsdomänen hinweg kommunizieren.
|
|
Sicherheit und Serialisierung
|
Behandelt Sicherheitsaspekte beim Serialisieren von Objekten.
|
|
Sicherheit und Racebedingungen
|
Beschreibt Verfahren zur Vermeidung von Racebedingungen im Code.
|
|
Sicherheit und dynamische Codegenerierung
|
Beschreibt Sicherheitsaspekte bei Anwendungen, in denen Code dynamisch erstellt wird.
|
|
Probleme mit der Sicherheit beim Setup
|
Enthält Überlegungen zum Testen und Einrichten einer Anwendung.
|
|
Codezugriffssicherheit
|
Beschreibt detailliert die Codezugriffssicherheit in .NET Framework und gibt Hinweise zu ihrer Anwendung im Code.
|
|
Rollenbasierte Sicherheit
|
Beschreibt ausführlich die rollenbasierte Sicherheit in .NET Framework und stellt Anleitungen für die Verwendung im Code bereit.
|