Freigeben über


Übersicht über die Sicherheit in Windows Forms

Aktualisiert: November 2007

Bevor .NET Framework entwickelt wurde, besaß jeder Code, der auf dem Computer eines Benutzers ausgeführt wurde, die gleichen Zugriffsrechte bzw. -berechtigungen für die Ressourcen wie der Benutzer. Wenn der Benutzer beispielsweise berechtigt war, auf das Dateisystem zuzugreifen, besaß der Code die gleiche Berechtigung. Wenn der Benutzer Zugriffsrechte für eine Datenbank besaß, konnte der Code ebenfalls auf die Datenbank zugreifen. Die Rechte bzw. Berechtigungen können bei absichtlich installierten ausführbaren Dateien unproblematisch sein. Sie können jedoch in Bezug auf potenziell bösartigen Code problematisch sein, der über das Internet oder ein lokales Intranet installiert wird. Solcher Code darf nicht unberechtigt auf die Computerressourcen des Benutzers zugreifen können.

.NET Framework enthält erstmals eine Infrastruktur mit dem Namen Codezugriffssicherheit, die es ermöglicht, zwischen den Berechtigungen bzw. Rechten von Code und denen des Benutzers zu unterscheiden. In der Standardeinstellung kann Code, der aus dem Internet bzw. dem Intranet stammt, nur als "teilweise vertrauenswürdig" ausgeführt werden. Durch die Einstufung als teilweise vertrauenswürdig werden Anwendungen einer Reihe von Beschränkungen unterworfen: Eine Anwendung ist beispielsweise nicht berechtigt, auf die lokale Festplatte zuzugreifen oder nicht verwalteten Code auszuführen. .NET Framework steuert den Zugriff des Codes auf Ressourcen anhand der Identität des Codes. Es wird also geprüft, woher der Code stammt, ob er über Assemblys mit starkem Namen verfügt, ob er mit einem Zertifikat signiert ist usw.

Die ClickOnce-Technologie, mit der Windows Forms-Anwendungen bereitgestellt werden, erleichtert das Entwickeln teilweise vertrauenswürdiger und voll vertrauenswürdiger Anwendungen sowie teilweise vertrauenswürdiger Anwendungen mit erweiterten Berechtigungen. ClickOnce enthält Features wie Berechtigungserweiterung und Bereitstellung vertrauenswürdiger Anwendungen, sodass die Anwendung bei Bedarf vom lokalen Benutzer volle Vertrauenswürdigkeit bzw. erweiterte Berechtigungen anfordern kann.

Sicherheit in .NET Framework

Mit der Codezugriffssicherheit kann die jeweilige Vertrauenswürdigkeit von Code bestimmt werden, abhängig von seiner Herkunft und weiteren Aspekten seiner Identität. Weitere Informationen zu den Beweisen, die Common Language Runtime zum Ermitteln der Sicherheitsrichtlinien verwendet, finden Sie unter Beweise. Computersysteme werden besser vor schädlichem Code geschützt, und es wird verhindert, dass vertrauenswürdiger Code absichtlich oder versehentlich die Sicherheit beeinträchtigt. Durch Codezugriffssicherheit können Sie genauer steuern, welche Aktionen die Anwendung durchführen darf, indem Sie nur die Berechtigungen angeben, die Ihre Anwendung tatsächlich benötigt. Codezugriffssicherheit wirkt sich auf jeglichen verwalteten Code aus, der für die Common Language Runtime vorgesehen ist, auch wenn dieser Code keine einzige Berechtigungsüberprüfung für die Codezugriffssicherheit durchführt. Weitere Informationen zur Sicherheit in .NET Framework finden Sie unter Schlüsselbegriffe der Sicherheit und Grundlagen der Codezugriffssicherheit.

Wenn der Benutzer eine ausführbare Windows Forms-Datei direkt auf einem Webserver oder einer Dateifreigabe ausführt, ist die Stufe der Vertrauenswürdigkeit der Anwendung vom Speicherort und der Aufrufmethode des Codes abhängig. Beim Start einer Anwendung wird sie automatisch bewertet und erhält von der Common Language Runtime einen benannten Berechtigungssatz. Standardmäßig erhält Code vom lokalen Computer den Berechtigungssatz Volles Vertrauen, Code aus einem lokalen Netzwerk den Berechtigungssatz Lokales Intranet und Code aus dem Internet den Berechtigungssatz Internet.

Hinweis:

In .NET Framework 1.0 Service Pack 1 und Service Pack 2 erhält Code aus der Internetzone den Berechtigungssatz Keine Vertrauensebene. In allen anderen Versionen von .NET Framework erhält Internetzonencode den Berechtigungssatz Internet.

Die in den einzelnen Berechtigungssätzen gewährten Berechtigungen sind unter dem Thema Die standardmäßigen Sicherheitsrichtlinien aufgelistet. In Abhängigkeit von den empfangenen Berechtigungen wird die Anwendung entweder ordnungsgemäß ausgeführt, oder es wird eine Sicherheitsausnahme ausgelöst.

Viele Windows Forms-Anwendungen werden mit ClickOnce bereitgestellt. Für die Tools, die zum Erstellen einer ClickOnce-Bereitstellung verwendet werden, gelten andere Sicherheitsstandardwerte als die bereits erläuterten. Weitere Informationen finden Sie in der folgenden Erläuterung.

Die einer Anwendung tatsächlich gewährten Berechtigungen können von den Standardwerten abweichen, da die Sicherheitsrichtlinie geändert werden kann. Dadurch kann es vorkommen, dass die Anwendung auf einem Computer über eine bestimmte Berechtigung verfügt, auf einem anderen jedoch nicht.

Entwickeln von Windows Forms-Anwendungen mit erhöhter Sicherheit

Sicherheit ist bei allen Schritten der Anwendungsentwicklung von großer Bedeutung. Lesen und befolgen Sie zunächst die Richtlinien für das Schreiben von sicherem Code.

Entscheiden Sie anschließend, ob die Anwendung mit voller Vertrauenswürdigkeit ausgeführt werden muss, oder ob sie in teilweiser Vertrauenswürdigkeit ausgeführt werden sollte. Das Ausführen der Anwendung in voller Vertrauenswürdigkeit erleichtert den Zugriff auf Ressourcen auf dem lokalen Computer. Allerdings werden Anwendung und Benutzer hohen Sicherheitsrisiken ausgesetzt, wenn Sie die Anwendung nicht streng nach den im entsprechenden Kapitel erläuterten Richtlinien für das Schreiben von sicherem Code entwerfen und entwickeln. Das Ausführen der Anwendung in teilweiser Vertrauenswürdigkeit erleichtert das Entwickeln einer sichereren Anwendung und reduziert Sicherheitsrisiken. Es muss jedoch genauer geplant werden, wie bestimmte Features implementiert werden sollen.

Wenn Sie teilweise Vertrauenswürdigkeit auswählen (d. h. die Berechtigungssätze Internet oder Lokales Intranet), entscheiden Sie, wie sich die Anwendung in dieser Umgebung verhalten soll. Windows Forms bietet andere, sicherere Möglichkeiten für das Implementieren von Features in einer teilweise vertrauenswürdigen Umgebung. Bestimmte Teile der Anwendung wie beispielsweise der Datenzugriff können für eine teilweise bzw. voll vertrauenswürdige Umgebung jeweils unterschiedlich entwickelt und programmiert werden. Einige Windows Forms-Features, wie beispielsweise die Anwendungseinstellungen, sind dazu bestimmt, mit teilweiser Vertrauenswürdigkeit zu funktionieren. Weitere Informationen finden Sie unter Übersicht über Anwendungseinstellungen.

Wenn für die Anwendung mehr Berechtigungen erforderlich sind, als die teilweise Vertrauenswürdigkeit zulässt, die Anwendung jedoch nicht in voller Vertrauenswürdigkeit ausgeführt werden soll, können Sie sie in teilweiser Vertrauenswürdigkeit ausführen und genau die benötigten zusätzlichen Berechtigungen gewähren. Wenn die Anwendung beispielsweise in teilweiser Vertrauenswürdigkeit ausgeführt werden soll, jedoch Lesezugriff auf ein Verzeichnis des lokalen Dateisystems des Benutzers benötigt wird, können Sie für dieses Verzeichnis die Berechtigung FileIOPermission anfordern. Wenn dieser Ansatz ordnungsgemäß angewendet wird, können die Funktionalität der Anwendung erhöht und die Sicherheitsrisiken für Benutzer minimiert werden.

Beachten Sie bei der Entwicklung einer Anwendung für das Ausführen in teilweiser Vertrauenswürdigkeit stets, welche Berechtigungen die Anwendung unbedingt benötigt und welche Berechtigungen optional sind. Wenn alle erforderlichen Berechtigungen bekannt sind, sollten Sie auf Anwendungsebene eine deklarative Anforderung für Berechtigungen erstellen. Durch das Anfordern von Berechtigungen wird die .NET Framework-Laufzeit darüber informiert, welche Berechtigungen Ihre Anwendung benötigt und genau welche sie nicht wünscht. Weitere Informationen zum Anfordern von Berechtigungen finden Sie unter Anfordern von Berechtigungen und Berechtigungsanforderungen.

Wenn Sie optionale Berechtigungen anfordern, müssen Sie Sicherheitsausnahmen behandeln können, die beim Ausführen einer Aktion ausgelöst werden, die nicht gewährte Berechtigungen erfordert. Durch die ordnungsgemäße Behandlung von SecurityException ist gewährleistet, dass die Anwendung weiter ausgeführt werden kann. Anhand der Ausnahme kann die Anwendung bestimmen, ob ein Feature für den Benutzer deaktiviert werden sollte. Beispielsweise kann eine Anwendung die Menüoption Speichern deaktivieren, wenn die erforderliche Dateiberechtigung nicht gewährt wurde.

In einigen Fällen ist es schwierig, den Überblick darüber zu behalten, ob Sie alle entsprechenden Berechtigungen bedacht haben. Ein Methodenaufruf, der auf den ersten Blick unauffällig erscheint, kann z. B. während seiner Ausführung auf das Dateisystem zugreifen. Wenn Sie die Anwendung nicht mit allen erforderlichen Berechtigungen bereitstellen, verlaufen die Tests beim Debuggen auf dem Desktop zwar positiv, beim Bereitstellen kann die Anwendung jedoch trotzdem fehlschlagen. Sowohl das .NET Framework 2.0 SDK als auch Visual Studio 2005 enthalten Tools, mit denen die für eine Anwendung erforderlichen Berechtigungen ermittelt werden können: das Befehlszeilentool MT.exe und das Feature zum Berechnen von Berechtigungen in Visual Studio.

In den folgenden Themen werden zusätzliche Windows Forms-Sicherheitsfeatures beschrieben.

Thema

Beschreibung

Beschreibt, wie in einer teilweise vertrauenswürdigen Umgebung auf Dateien und Daten zugegriffen wird.

Beschreibt, wie in einer teilweise vertrauenswürdigen Umgebung auf Druckfeatures zugegriffen wird.

Beschreibt das Bearbeiten von Fenstern, Verwenden der Zwischenablage und das Aufrufen von nicht verwaltetem Code in einer teilweise vertrauenswürdigen Umgebung.

Bereitstellen einer Anwendung mit den entsprechenden Berechtigungen

Die häufigste Methode zum Bereitstellen einer Windows Forms-Anwendung auf einem Clientcomputer ist die Bereitstellungstechnologie ClickOnce, mit der alle Komponenten angegeben werden, die die Anwendung zur Ausführung benötigt. ClickOnce verwendet XML-Dateien, so genannte Manifeste, um die Assemblys und Dateien, aus denen die Anwendung besteht, sowie die von der Anwendung benötigten Berechtigungen zu beschreiben.

ClickOnce verwendet zwei Technologien zum Anfordern von erweiterten Berechtigungen auf einem Clientcomputer. Beide Technologien stützen sich auf die Verwendung von Authenticode-Zertifikaten. Anhand der Zertifikate können Benutzer leichter erkennen, ob die Anwendung von einer vertrauenswürdigen Quelle stammt.

In der folgenden Tabelle sind diese Technologien beschrieben.

Technologie für erweiterte Berechtigungen

Beschreibung

Berechtigungserweiterung

Zeigt dem Benutzer ein Sicherheitsdialogfeld an, wenn die Anwendung das erste Mal ausgeführt wird. Im Dialogfeld zum Berechtigungserweiterung wird der Benutzer darüber informiert, wer die Anwendung veröffentlicht hat. Der Benutzer kann anhand dieser Informationen entscheiden, ob zusätzliche Berechtigungen gewährt werden.

Bereitstellung vertrauenswürdiger Anwendungen

Erfordert die einmalige Installation des Authenticode-Zertifikats eines Herausgebers durch einen Systemadministrator. Danach werden alle mit diesem Zertifikat signierten Anwendungen als vertrauenswürdig eingestuft und können auf dem lokalen Computer als voll vertrauenswürdig ausgeführt werden, ohne dass zusätzliche Aufforderungen zum Gewähren von Berechtigungen angezeigt werden.

Für welche Technologie Sie sich entscheiden, ist von der Bereitstellungsumgebung abhängig. Weitere Informationen finden Sie unter Auswählen einer Strategie für die ClickOnce-Bereitstellung.

In der Standardeinstellung werden alle ClickOnce-Anwendungen, die entweder mit Visual Studio oder den .NET Framework 2.0 SDK-Tools (Mage.exe und MageUI.exe) bereitgestellt wurden, so konfiguriert, dass sie auf einem voll vertrauenswürdigen Clientcomputer ausgeführt werden können. Diese Standardeinstellung muss geändert werden, wenn Sie teilweise vertrauenswürdige Anwendungen oder Anwendungen mit einigen zusätzlichen Berechtigungen bereitstellen. Diese Änderung können Sie beim Konfigurieren der Bereitstellung entweder mithilfe von Visual Studio oder dem .NET Framework 2.0 SDK-Tool MageUI.exe vornehmen. Weitere Informationen zur Verwendung von MageUI.exe finden Sie in der exemplarischen Vorgehensweise: Bereitstellen einer ClickOnce-Anwendung über die Befehlszeile.

Weitere Informationen zu Sicherheitsaspekten von ClickOnce und zur Berechtigungserweiterung finden Sie unter ClickOnce-Bereitstellung und Sicherheit. Weitere Informationen zur Bereitstellung vertrauenswürdiger Anwendungen finden Sie unter Überblick über die Bereitstellung vertrauenswürdiger Anwendungen.

Testen der Anwendung

Wenn Sie die Windows Forms-Anwendung mithilfe von Visual Studio bereitgestellt haben, können Sie in der Entwicklungsumgebung das Debuggen in teilweiser Vertrauenswürdigkeit oder mit einem eingeschränkten Berechtigungssatz aktivieren.

Siehe auch

Konzepte

Grundlagen der Codezugriffssicherheit

Übersicht über die ClickOnce-Bereitstellung

Überblick über die Bereitstellung vertrauenswürdiger Anwendungen

Referenz

Tool zum Generieren und Bearbeiten von Manifesten (Mage.exe)

Tool zum Generieren und Bearbeiten von Manifesten, grafischer Client (MageUI.exe)

Weitere Ressourcen

Sicherheit in Windows Forms