Freigeben über


Sicherheit in Windows Forms – Übersicht

Vor der Veröffentlichung von .NET Framework hatten alle auf dem Computer eines Benutzers ausgeführten Code die gleichen Rechte oder Berechtigungen für den Zugriff auf Ressourcen, die ein Benutzer des Computers hatte. Wenn der Benutzer beispielsweise auf das Dateisystem zugreifen darf, konnte der Code auf das Dateisystem zugreifen; Wenn der Benutzer auf eine Datenbank zugreifen darf, konnte der Code auf diese Datenbank zugreifen. Obwohl diese Rechte oder Berechtigungen für Code in ausführbaren Dateien akzeptabel sein können, die der Benutzer explizit auf dem lokalen Computer installiert hat, kann er für potenziell schädlichen Code, der aus dem Internet oder einem lokalen Intranet stammt, nicht akzeptabel sein. Dieser Code sollte nicht ohne Berechtigung auf die Computerressourcen des Benutzers zugreifen können.

.NET Framework führt eine Infrastruktur mit dem Namen Code Access Security ein, mit der Sie die Berechtigungen oder Rechte des Codes von den Rechten unterscheiden können, die der Benutzer hat. Standardmäßig kann Code, der aus dem Internet und dem Intranet stammt, nur in einem begrenzten Vertrauensbereich ausgeführt werden. Teilweises Vertrauen unterwirft eine Anwendung einer Reihe von Einschränkungen: Unter anderem ist der Zugriff auf die lokale Festplatte beschränkt, und die Anwendung darf keinen nicht verwalteten Code ausführen. Das .NET Framework steuert die Ressourcen, auf die Code basierend auf der Identität des Codes zugreifen darf: woher er stammt, ob es über eine Strong-Named Assemblysverfügt, ob er mit einem Zertifikat signiert ist usw.

ClickOnce-Technologie, die Sie zum Bereitstellen von Windows Forms-Anwendungen verwenden, macht es Ihnen leichter, Anwendungen zu entwickeln, die in teilweiser Vertrauensstellung, in voller Vertrauensstellung oder in teilweiser Vertrauensstellung mit erhöhten Berechtigungen ausgeführt werden. ClickOnce bietet Funktionen wie Berechtigungserweiterung und vertrauenswürdige Anwendungsbereitstellung, sodass Ihre Anwendung auf verantwortungsvolle Weise Vertrauenswürdigkeit oder erhöhte Berechtigungen vom lokalen Benutzer anfordern kann.

Grundlegendes zur Sicherheit in .NET Framework

Die Codezugriffssicherheit ermöglicht es, Code in unterschiedlichem Maße zu vertrauen, abhängig davon, woher der Code stammt, und anderen Faktoren der Identität des Codes. Weitere Informationen zu den Nachweisen, die die Common Language Runtime zum Ermitteln der Sicherheitsrichtlinie verwendet, finden Sie unter Evidence. Sie schützt Computersysteme vor bösartigem Code und schützt vertrauenswürdigen Code vor absichtlicher oder versehentlich kompromittierender Sicherheit. Die Codezugriffssicherheit bietet Ihnen auch mehr Kontrolle darüber, welche Aktionen Ihre Anwendung ausführen kann, da Sie nur die Berechtigungen angeben können, über die Ihre Anwendung verfügen muss. Die Codezugriffssicherheit wirkt sich auf alle verwalteten Code aus, der auf die Common Language Runtime ausgerichtet ist, auch wenn dieser Code keine einzige Codezugriffssicherheitsprüfung durchführt. Weitere Informationen zur Sicherheit im .NET Framework finden Sie unter Wichtige Sicherheitskonzepte und Code Access Security Grundlagen.

Wenn der Benutzer eine ausführbare Windows Forms-Datei direkt von einem Webserver oder einer Dateifreigabe aus ausführt, hängt der Vertrauensgrad der Anwendung davon ab, wo sich der Code befindet und wie er gestartet wird. Wenn eine Anwendung ausgeführt wird, wird sie automatisch ausgewertet und erhält einen benannten Berechtigungssatz aus der Common Language Runtime. Standardmäßig wird dem Code vom lokalen Computer die Berechtigungsstufe "Volles Vertrauen" gewährt, dem Code aus einem lokalen Netzwerk die Berechtigungsstufe "Lokales Intranet", und der Code aus dem Internet erhält die Berechtigungsstufe "Internet".

Anmerkung

In der .NET Framework Version 1.0, Service Pack 1 und Service Pack 2, erhält die Code-Gruppe der Internetzone den Berechtigungssatz "Nichts". In allen anderen Versionen von .NET Framework erhält die Internetzonencodegruppe den Satz der Internetberechtigungen.

Die in jedem dieser Berechtigungssätze erteilten Standardberechtigungen werden im Thema Standardsicherheitsrichtlinie aufgeführt. Abhängig von den Berechtigungen, die die Anwendung empfängt, wird sie entweder ordnungsgemäß ausgeführt oder generiert eine Sicherheits ausnahme.

Viele Windows Forms-Anwendungen werden mithilfe von ClickOnce bereitgestellt. Die Tools, die zum Generieren einer ClickOnce-Bereitstellung verwendet werden, haben andere Sicherheitsvorgaben als die zuvor erläuterten. Weitere Informationen finden Sie in der folgenden Diskussion.

Die tatsächlichen Berechtigungen, die Ihrer Anwendung gewährt werden, können sich von den Standardwerten unterscheiden, da die Sicherheitsrichtlinie geändert werden kann; Dies bedeutet, dass Ihre Anwendung die Berechtigung auf einem Computer, aber nicht auf einem anderen Computer haben kann.

Entwickeln einer sichereren Windows Forms-Anwendung

Sicherheit ist in allen Schritten der Anwendungsentwicklung wichtig. Beginnen Sie, indem Sie die Richtlinien für sicheres Codierenüberprüfen und befolgen.

Entscheiden Sie als Nächstes, ob Ihre Anwendung voll vertrauenswürdig ausgeführt werden muss oder ob sie teilweise vertrauenswürdig ausgeführt werden soll. Das Ausführen Ihrer Anwendung im Vollvertrauensmodus erleichtert den Zugriff auf Ressourcen auf dem lokalen Computer, setzt jedoch Ihre Anwendung und ihre Benutzer erheblichen Sicherheitsrisiken aus, wenn Sie Ihre Anwendung nicht streng gemäß den Sicherheitsrichtlinien für sicheres Programmieren entwerfen und entwickeln. Das Ausführen Ihrer Anwendung in teilweiser Vertrauensstellung erleichtert die Entwicklung einer sichereren Anwendung und reduziert viel Risiko, erfordert jedoch mehr Planung in der Implementierung bestimmter Features.

Wenn Sie eine teilweise Vertrauensstellung auswählen (d. h. entweder die Internet- oder lokale Intranetberechtigungssätze), entscheiden Sie, wie sich Ihre Anwendung in dieser Umgebung verhalten soll. Windows Forms bietet alternative und sicherere Methoden zum Implementieren von Features in einer halb vertrauenswürdigen Umgebung. Bestimmte Teile Ihrer Anwendung, z. B. datenzugriff, können sowohl für teilweise vertrauenswürdige als auch für voll vertrauenswürdige Umgebungen unterschiedlich gestaltet und geschrieben werden. Einige Windows Forms-Features, z. B. Anwendungseinstellungen, sind so konzipiert, dass sie teilweise vertrauenswürdig sind. Weitere Informationen finden Sie unter Übersicht der Anwendungseinstellungen.

Wenn Ihre Anwendung mehr Berechtigungen benötigt, als es eine teilweise Vertrauensstellung erlaubt, Sie aber nicht mit voller Vertrauensstellung ausgeführt werden möchten, können Sie in einer teilweise vertrauenswürdigen Umgebung arbeiten, während Sie nur die zusätzlichen erforderlichen Berechtigungen anfordern. Wenn Sie beispielsweise mit eingeschränkten Berechtigungen arbeiten möchten, Ihrer Anwendung jedoch schreibgeschützten Zugriff auf ein Verzeichnis im Dateisystem des Benutzers gewähren müssen, können Sie FileIOPermission nur für dieses Verzeichnis anfordern. Dieser Ansatz kann Ihrer Anwendung eine höhere Funktionalität bieten und Sicherheitsrisiken für Ihre Benutzer minimieren.

Wenn Sie eine Anwendung entwickeln, die in einer Umgebung mit eingeschränktem Vertrauen ausgeführt wird, verfolgen Sie, welche Berechtigungen Ihre Anwendung benötigt und welche Berechtigungen sie optional verwenden kann. Wenn alle Berechtigungen bekannt sind, sollten Sie eine deklarative Anforderung für die Berechtigung auf Anwendungsebene stellen. Das Anfordern von Berechtigungen informiert die .NET Framework-Laufzeit darüber, welche Berechtigungen Ihre Anwendung benötigt und welche Berechtigungen sie speziell nicht benötigen. Weitere Informationen zum Anfordern von Berechtigungen finden Sie unter Anfordern von Berechtigungen.

Wenn Sie optionale Berechtigungen anfordern, müssen Sie Sicherheitsausnahmen behandeln, die generiert werden, wenn Ihre Anwendung eine Aktion ausführt, die Berechtigungen erfordert, die Ihrer Anwendung nicht erteilt wurden. Eine sachgemäße Handhabung der SecurityException gewährleistet, dass Ihre Anwendung weiterhin ausgeführt werden kann. Ihre Anwendung kann die Ausnahme verwenden, um zu bestimmen, ob ein Feature für den Benutzer deaktiviert werden soll. Eine Anwendung kann z. B. die Menüoption Speichern deaktivieren, wenn die erforderliche Dateiberechtigung nicht erteilt wird.

Manchmal ist es schwierig zu wissen, ob Sie alle entsprechenden Berechtigungen bestätigt haben. Ein Methodenaufruf, der unauffällig auf der Oberfläche aussieht, kann z. B. zu einem bestimmten Zeitpunkt während der Ausführung auf das Dateisystem zugreifen. Wenn Sie Ihre Anwendung nicht mit allen erforderlichen Berechtigungen bereitstellen, kann es sein, dass sie beim Debuggen auf dem Desktop einwandfrei funktioniert, jedoch beim Bereitstellen fehlschlägt. Sowohl das .NET Framework 2.0 SDK als auch Visual Studio 2005 enthalten Tools zum Berechnen der Berechtigungen, die eine Anwendung benötigt: das Befehlszeilentool MT.exe bzw. das Feature "Berechtigungen berechnen" von Visual Studio.

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

Thema Beschreibung
- Sicherer Datei- und Datenzugriff in Windows Forms Beschreibt, wie Sie auf Dateien und Daten in einer teilweise vertrauenswürdigen Umgebung zugreifen können.
- Sichereres Drucken in Windows Forms Beschreibt, wie Sie in einer teilweise vertrauenswürdigen Umgebung auf Druckfeatures zugreifen.
- Zusätzliche Sicherheitsüberlegungen in Windows Forms Beschreibt das Ausführen von Fenstermanipulationen, die Verwendung der Zwischenablage und das Durchführen von Aufrufen von nicht verwaltetem Code in einer teilweise vertrauenswürdigen Umgebung.

Bereitstellen einer Anwendung mit den entsprechenden Berechtigungen

Die am häufigsten verwendete Möglichkeit zum Bereitstellen einer Windows Forms-Anwendung auf einem Clientcomputer ist clickOnce, eine Bereitstellungstechnologie, die alle Komponenten beschreibt, die Ihre Anwendung ausführen muss. ClickOnce verwendet XML-Dateien, die als Manifeste bezeichnet werden, um die Assemblys und Dateien zu beschreiben, aus denen Ihre Anwendung besteht, sowie die berechtigungen, die Ihre Anwendung benötigt.

ClickOnce verfügt über zwei Technologien zum Anfordern von erhöhten Berechtigungen auf einem Clientcomputer. Beide Technologien basieren auf der Verwendung von Authenticode-Zertifikaten. Die Zertifikate bieten Ihren Benutzern eine gewisse Sicherheit, dass die Anwendung von einer vertrauenswürdigen Quelle stammt.

In der folgenden Tabelle werden diese Technologien beschrieben.

Technologie für erhöhte Berechtigungen Beschreibung
Berechtigungserweiterung Fordert den Benutzer das erste Mal, wenn Ihre Anwendung ausgeführt wird, mit einem Sicherheitsdialog auf. Das Dialogfeld Berechtigungserweiterung informiert den Benutzer darüber, wer die Anwendung veröffentlicht hat, damit dieser eine fundierte Entscheidung darüber treffen kann, ob der Anwendung zusätzliches Vertrauen gewährt werden soll.
Vertrauenswürdige Anwendungsbereitstellung Umfasst einen Systemadministrator, der eine einmalige Installation des Authenticode-Zertifikats eines Herausgebers auf einem Clientcomputer durchführt. Von diesem Punkt an gelten alle mit dem Zertifikat signierten Anwendungen als vertrauenswürdig und können ohne zusätzliche Aufforderung auf dem lokalen Computer voll vertrauenswürdig ausgeführt werden.

Welche Technologie Sie auswählen, hängt von Ihrer Bereitstellungsumgebung ab. Weitere Informationen finden Sie unter Auswählen einer ClickOnce-Bereitstellungsstrategie.

Standardmäßig werden ClickOnce-Anwendungen, die mit Visual Studio oder den .NET Framework SDK-Tools (Mage.exe und MageUI.exe) bereitgestellt werden, so konfiguriert, dass sie auf einem Clientcomputer ausgeführt werden, der über die volle Vertrauenswürdigkeit verfügt. Wenn Sie Ihre Anwendung bei Verwendung von Teilvertrauen oder mit nur einigen zusätzlichen Berechtigungen bereitstellen, müssen Sie diese Standardeinstellung ändern. Sie können dies entweder mit Visual Studio oder dem .NET Framework SDK-Tool MageUI.exe tun, wenn Sie die Bereitstellung konfigurieren. Weitere Informationen zur Verwendung von MageUI.exefinden Sie im Walkthrough: Manually deploying a ClickOnce application. Weitere Informationen finden Sie unter Wie man: Benutzerdefinierte Berechtigungen für eine ClickOnce-Anwendung festlegt oder Wie man: Benutzerdefinierte Berechtigungen für eine ClickOnce-Anwendung festlegt.

Weitere Informationen zu den Sicherheitsaspekten von ClickOnce und Berechtigungserhöhung finden Sie unter Absichern von ClickOnce-Anwendungen. Weitere Informationen zur Bereitstellung vertrauenswürdiger Anwendungen finden Sie unter Übersicht über die Bereitstellung vertrauenswürdiger Anwendungen.

Testen der Anwendung

Wenn Sie Ihre Windows Forms-Anwendung mithilfe von Visual Studio bereitgestellt haben, können Sie das Debuggen in partieller Vertrauensstellung oder mit einem eingeschränkten Berechtigungssatz direkt aus der Entwicklungsumgebung aktivieren. Siehe auch Vorgehensweise: Debuggen einer ClickOnce-Anwendung mit eingeschränkten Berechtigungen.

Siehe auch