Windows Presentation Foundation - Sicherheit bei teilweiser Vertrauenswürdigkeit

Aktualisiert: Juli 2008

Im Allgemeinen sollte der direkte Zugriff von Internetanwendungen auf wichtige Systemressourcen beschränkt werden, um böswillige Beschädigungen zu vermeiden. Standardmäßig können HTML und clientseitige Skriptsprachen nicht auf wichtige Systemressourcen zugreifen. Da im Browser gehostete Windows Presentation Foundation (WPF)-Anwendungen vom Browser aus gestartet werden können, sollten für sie ähnliche Beschränkungen gelten. Um diese Beschränkungen durchzusetzen, verwendet WPF sowohl Codezugriffssicherheit (Code Access Security, CAS) als auch ClickOnce (siehe Windows Presentation Foundation-Sicherheitsstrategie - Plattformsicherheit). Standardmäßig fordern im Browser gehostete Anwendungen den CAS-Berechtigungssatz für die Internetzone an. Dies geschieht unabhängig davon, ob diese Anwendungen vom Internet, dem lokalen Intranet oder dem lokalen Computer aus gestartet werden. Anwendungen, die nicht mit einem Berechtigungssatz ausgeführt werden, der nicht dem vollen Berechtigungssatz entspricht, werden mit teilweiser Vertrauenswürdigkeit ausgeführt.

WPF bietet viele Arten der Unterstützung, um sicherzustellen, dass bei teilweiser Vertrauenswürdigkeit möglichst viele Funktionen sicher ausgeführt werden können, und bietet zusammen mit CAS zusätzliche Unterstützung für die Programmierung mit teilweiser Vertrauenswürdigkeit.

Dieses Thema enthält folgende Abschnitte.

  • WPF-Features für die Unterstützung von teilweiser Vertrauenswürdigkeit
  • Programmierung mit teilweiser Vertrauenswürdigkeit
  • Verwalten von Berechtigungen
  • Verwandte Abschnitte

WPF-Features für die Unterstützung von teilweiser Vertrauenswürdigkeit

Die folgende Tabelle enthält die wichtigsten Funktionen von Windows Presentation Foundation (WPF), die unbedenklich im Rahmen des Berechtigungssatzes für die Internetzone verwendet werden können.

Tabelle 1: Sichere WPF-Features bei teilweiser Vertrauenswürdigkeit

Funktionsbereich

Feature

Allgemein

Browserfenster

Zugriff auf die Ursprungssite

IsolatedStorage (beschränkt auf 512 KB)

UIAutomation-Anbieter

Befehle

Eingabemethoden-Editoren (IMEs)

Tablettstift und Freihandeingabe

Simuliertes Drag & Drop mit Ereignissen zur Mausaufzeichnung und zum Verschieben

OpenFileDialog

XAML-Deserialisierung (über XamlReader.Load)

Webintegration

Download-Dialogfeld des Browsers

Vom Benutzer initiierte Navigation der obersten Ebene

mailto:links

Uniform Resource Identifier-Parameter

HTTPWebRequest

In einem IFRAME gehosteter WPF-Inhalt

Hosten von HTML-Seiten mithilfe eines Frames

Hosten von HTML-Seiten mithilfe eines Webbrowsers

Webdienste (ASMX)

Webdienste (Verwendung von Windows Communication Foundation)

Darstellung

2D und 3D

Animation

Medien (Ursprungssite und domänenübergreifend)

Imaging/Audio/Video

Lesen

FlowDocuments

XPS-Dokumente

Eingebettete Schriftarten & Systemschriftarten

CFF- & TrueType-Schriftarten

Bearbeiten

Rechtschreibprüfung

RichTextBox

Unterstützung der Zwischenablage bei Nur-Text und Freihand

Vom Benutzer initiiertes Einfügen

Kopieren von ausgewähltem Inhalt

Steuerelemente

Allgemeine Steuerelemente

Diese Tabelle enthält die wichtigsten WPF-Features. Ausführlichere Informationen finden Sie in Windows Software Development Kit (SDK). Hier werden die für jedes Member in WPF erforderlichen Berechtigungen dokumentiert. Darüber hinaus weisen die folgenden Features ausführlichere Informationen hinsichtlich der Ausführung unter teilweiser Vertrauenswürdigkeit auf, einschließlich besonderer Überlegungen:

Die folgende Tabelle enthält die WPF-Features, die im Rahmen des Berechtigungssatzes für die Internetzone nicht unbedenklich verwendet werden können.

Tabelle 2: WPF-Features, die bei teilweiser Vertrauenswürdigkeit nicht sicher sind

Funktionsbereich

Feature

Allgemein

Fenster (anwendungsdefinierte Fenster und Dialogfelder)

SaveFileDialog

Dateisystem

Registrierungszugriff

Drag & Drop

XAML-Serialisierung (über XamlWriter.Save)

UIAutomation-Clients

Zugriff auf das Quellcodefenster (HwndHost)

Vollständige Sprachunterstützung

Windows Forms-Interoperabilität

Webintegration

Skripterstellung

Dokumentobjektmodell

Darstellung

Bitmapeffekte

Bildcodierung

Bearbeiten

Rich Text Format-Zwischenablage

Vollständige XAML-Unterstützung

Programmierung mit teilweiser Vertrauenswürdigkeit

Bei XBAP-Anwendungen wird Code, der über den standardmäßigen Berechtigungssatz für die Internetzone hinausgeht, von CAS erkannt. Es wird eine Sicherheitsausnahme ausgelöst, und die Anwendung wird beendet. Dies schützt zwar den Benutzer, ist jedoch nicht besonders benutzerfreundlich.

Bei Code, der die zulässigen Berechtigungen überschreitet, handelt es sich normalerweise um gemeinsamen Code, der von eigenständigen und im Browser gehosteten Anwendungen gemeinsam verwendet wird. CAS und WPF bieten mehrere Verfahren für die Verwaltung dieses Szenarios.

Erkennen von Berechtigungen mithilfe der Codezugriffssicherheit (CAS)

In manchen Situationen kann freigegebener Code in Bibliothekassemblys sowohl von eigenständigen Anwendungen als auch von XBAPs verwendet werden. In diesen Fällen werden vom Code möglicherweise Funktionen ausgeführt, für die Berechtigungen erforderlich sind, die über den der Anwendung zugewiesenen Berechtigungssatz hinausgehen. Mithilfe der Microsoft .NET Framework-Sicherheit kann die Anwendung erkennen, ob sie über eine bestimmte Berechtigung verfügt. Insbesondere kann sie prüfen, ob sie über eine bestimmte Berechtigung verfügt, indem sie die Demand-Methode auf der Instanz der gewünschten Berechtigung aufruft. Dies wird im folgenden Beispiel gezeigt. Dieses Beispiel enthält Code, der überprüft, ob er die Fähigkeit besitzt, eine Datei auf dem lokalen Datenträger zu speichern:

Wenn eine Anwendung die gewünschte Berechtigung nicht besitzt, löst der Aufruf von Demand eine Sicherheitsausnahme aus. Andernfalls wurde die Berechtigung gewährt. IsPermissionGranted kapselt dieses Verhalten und gibt jeweils true oder false zurück.

Ordnungsgemäße Verringerung der Funktionalität

Die Fähigkeit, festzustellen, ob Code die Berechtigung besitzt, nötige Funktionen auszuführen, ist für Code interessant, der von verschiedenen Zonen aus ausgeführt werden kann. Das Erkennen der Zone ist zwar eine wichtige Funktion, jedoch ist es generell vorzuziehen, wenn möglich eine Alternative für den Benutzer bereitzustellen. So ermöglicht eine Anwendung mit voller Vertrauenswürdigkeit Benutzern normalerweise, an jeder beliebigen Stelle Dateien zu erstellen, während eine Anwendung mit teilweiser Vertrauenswürdigkeit nur in der isolierten Speicherung Dateien erstellen kann. Wenn der Code zum Erstellen einer Datei in einer Assembly (.dll) vorhanden ist, die sowohl von Anwendungen mit voller Vertrauenswürdigkeit (eigenständige Anwendungen) als auch von Anwendungen mit teilweiser Vertrauenswürdigkeit (im Browser gehostete Anwendungen) gemeinsam genutzt wird, und beide Anwendungen es Benutzern ermöglichen sollen, Dateien zu erstellen, sollte der freigegebene Code feststellen, ob er mit voller oder teilweiser Vertrauenswürdigkeit ausgeführt wird, bevor eine Datei am entsprechenden Speicherort erstellt wird. Im folgenden Code werden beide Fälle veranschaulicht.

In vielen Fällen sollte es Ihnen möglich sein, eine Alternative mit teilweiser Vertrauenswürdigkeit zu finden.

In einer kontrollierten Umgebung, wie beispielsweise einem Intranet, können benutzerdefinierte verwaltete Frameworks über die Client-Basis in den globaler Assemblycache (GAC) installiert werden. Diese Bibliotheken können Code ausführen, der volle Vertrauenswürdigkeit erfordert, und auf sie kann von Anwendungen mit teilweiser Vertrauenswürdigkeit aus mithilfe von AllowPartiallyTrustedCallersAttribute verwiesen werden (weitere Informationen finden Sie unter Windows Presentation Foundation-Sicherheit und Windows Presentation Foundation-Sicherheitsstrategie - Plattformsicherheit).

Browserhosterkennung

Das Verwenden von CAS zum Überprüfen von Berechtigungen ist ein geeignetes Verfahren, wenn Sie auf Berechtigungsbasis überprüfen müssen. Dieses Verfahren hängt jedoch davon ab, dass Ausnahmen als Teil der normalen Verarbeitung abgefangen werden, was im Allgemeinen nicht empfehlenswert ist und sich auf die Leistung auswirken kann. Wenn Ihre XAML-Browseranwendung (XBAP) nur in der Sandbox der Internetzone ausgeführt wird, können Sie BrowserInteropHelper.IsBrowserHosted verwenden, was true für XAML-Browseranwendungen (XBAPs) zurückgibt.

Weitere Informationen finden Sie unter Beispiel für die Prüfung des Browserhostings.

Tipp

IsBrowserHosted erkennt nur, ob eine Anwendung in einem Browser ausgeführt wird. Es wird nicht erkannt, mit welchem Berechtigungssatz eine Anwendung ausgeführt wird.

Verwalten von Berechtigungen

Standardmäßig werden XBAPs mit teilweiser Vertrauenswürdigkeit (Standardberechtigungssatz für die Internetzone) ausgeführt. Je nach den Anforderungen der Anwendung ist es jedoch möglich, den Berechtigungssatz zu ändern. Wenn beispielsweise XBAPs von einem lokalen Intranet aus gestartet werden, können sie von einem erweiterten Berechtigungssatz profitieren, wie in der folgenden Tabelle gezeigt wird.

Tabelle 3: LocalIntranet und Internetberechtigungen

Berechtigung

Attribut

LocalIntranet

Internet

DNS

Zugriff DNS-Server

Yes

No

Umgebungsvariablen

Read

Yes

No

Dateidialogfelder

Öffnen

Yes

Yes

Dateidialogfelder

Uneingeschränkt

Yes

No

Isolierte Speicherung

Assemblyisolation nach Benutzer

Yes

No

Isolierte Speicherung

Unbekannte Isolation

Yes

Yes

Isolierte Speicherung

Unbegrenztes Benutzerkontingent

Yes

No

Medien

Sicherheit für Audio, Video und Bilder

Yes

Yes

Drucken

Standarddruck

Yes

No

Drucken

Sicheres Drucken

Yes

Yes

Reflektion

Ausgabe

Yes

No

Sicherheit

Ausführen von verwaltetem Code

Yes

Yes

Sicherheit

Bestätigen von gewährten Berechtigungen

Yes

No

Benutzeroberfläche

Uneingeschränkt

Yes

No

Benutzeroberfläche

Sichere Fenster der obersten Ebene

Yes

Yes

Benutzeroberfläche

Eigene Zwischenablage

Yes

Yes

Webbrowser

Sichere Frame-Navigation zu HTML

Yes

Yes

Wenn Sie Berechtigungen erweitern müssen, können Sie eines der folgenden Tools verwenden:

Wenn Ihre XBAP vollständige Vertrauenswürdigkeit erfordert, können Sie die gleichen Tools verwenden, um die erforderlichen Berechtigungen zu erweitern, obwohl eine XBAP erst dann vollständige Vertrauenswürdigkeit erhält, wenn sie auf dem lokalen Computer installiert und von diesem Computer gestartet wird. Dies bedeutet, dass Sie den Support für die automatische Aktualisierung, den Sie erhalten, wenn Sie XBAPs auf Webservern veröffentlichen, nicht beibehalten.

Siehe auch

Konzepte

Windows Presentation Foundation-Sicherheit

Windows Presentation Foundation-Sicherheitsstrategie - Plattformsicherheit

Windows Presentation Foundation-Sicherheitsstrategie - Sicherheitsentwicklung

Änderungsprotokoll

Date

Versionsgeschichte

Grund

Juli 2008

Hinzugefügte Erwähnung des neuen WebBrowser-Steuerelements.

SP1-Featureänderung.