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:
Webdienste verwenden Windows Communication Foundation (siehe Teilweise Vertrauenswürdigkeit).
XAML (siehe Übersicht über XAML).
Popups (siehe System.Windows.Controls.Primitives.Popup).
Drag & Drop (siehe Übersicht über Drag & Drop).
Zwischenablage (siehe System.Windows.Clipboard).
Imaging (siehe System.Windows.Controls.Image).
Serialisierung (siehe XamlReader.Load, XamlWriter.Save).
Dialogfeld Datei öffnen (siehe Microsoft.Win32.OpenFileDialog).
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 |
Standarddruck |
Yes |
No |
|
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:
Tool zum Generieren und Bearbeiten von Manifesten (Mage.exe).
Tool zum Generieren und Bearbeiten von Manifesten, grafischer Client (MageUI.exe).
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. |