Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Bij het ontwikkelen van windows Presentation Foundation (WPF) zelfstandige en browser-gehoste toepassingen, moet u rekening houden met het beveiligingsmodel. Zelfstandige WPF-toepassingen worden uitgevoerd met onbeperkte machtigingen (CASFullTrust machtigingenset), ongeacht of deze zijn geïmplementeerd met Windows Installer (.msi), XCopy of ClickOnce. Het implementeren van gedeeltelijke vertrouwen, zelfstandige WPF-toepassingen met ClickOnce wordt niet ondersteund. Een hosttoepassing met volledige vertrouwensrelatie kan echter een gedeeltelijke vertrouwensrelatie AppDomain maken met behulp van het .NET Framework-invoegtoepassingsmodel. Zie WPF Add-Ins Overviewvoor meer informatie.
WPF-browser-gehoste toepassingen worden gehost door Windows Internet Explorer of Firefox en kunnen XAML-browsertoepassingen (XBAPs) of losse XAML-documenten (Extensible Application Markup Language) zijn voor meer informatie, zie WPF XAML Browser Applications Overview.
Waarschuwing
XBAPs vereisen dat verouderde browsers werken, zoals Internet Explorer en oude versies van Firefox. Deze oudere browsers worden meestal niet ondersteund in Windows 10 en Windows 11. Moderne browsers bieden geen ondersteuning meer voor de technologie die is vereist voor XBAP-apps vanwege beveiligingsrisico's. Invoegtoepassingen die XBAPs inschakelen, worden niet meer ondersteund. Zie Veelgestelde vragen over door de WPF-browser gehoste toepassingen (XBAP)voor meer informatie.
WPF-browser-gehoste toepassingen worden standaard uitgevoerd in een gedeeltelijke vertrouwensbeveiligingssandbox, die is beperkt tot de standaard CAS-Internet zonetoestemmingsset. Hierdoor worden wpF-toepassingen die door de browser worden gehost effectief geïsoleerd van de clientcomputer op dezelfde manier als u zou verwachten dat typische webtoepassingen worden geïsoleerd. Een XBAP kan bevoegdheden verhogen tot Volledig vertrouwen, afhankelijk van de beveiligingszone van de implementatie-URL en de beveiligingsconfiguratie van de client. Zie WPF Partial Trust Securityvoor meer informatie.
In dit onderwerp wordt het beveiligingsmodel voor zelfstandige en browser-gehoste toepassingen van Windows Presentation Foundation (WPF) besproken.
Dit onderwerp bevat de volgende secties:
APTCA-assembly's uitschakelen voor gedeeltelijk vertrouwde clienttoepassingen
Middelen voor het Ontwikkelen van WPF-Toepassingen die de Beveiliging Verbeteren
Veilige navigatie
Voor XBAPs onderscheidt WPF twee typen navigatie: toepassing en browser.
toepassingsnavigatie is navigatie tussen items van inhoud in een toepassing die wordt gehost door een browser. browsernavigatie is navigatie die de inhoud en locatie-URL van een browser zelf wijzigt. De relatie tussen toepassingsnavigatie (meestal XAML) en browsernavigatie (meestal HTML) wordt weergegeven in de volgende afbeelding:
Het type inhoud dat als veilig wordt beschouwd voor een XBAP waarnaar moet worden genavigeerd, wordt voornamelijk bepaald door het gebruik van toepassingsnavigatie of browsernavigatie.
Beveiliging van toepassingsnavigatie
Toepassingsnavigatie wordt als veilig beschouwd als deze kan worden geïdentificeerd met een pack-URI, die ondersteuning biedt voor vier typen inhoud:
| Inhoudstype | Beschrijving | URI-voorbeeld |
|---|---|---|
| Hulpbron | Bestanden die aan een project worden toegevoegd met een buildtype Resource. | pack://application:,,,/MyResourceFile.xaml |
| Inhoud | Bestanden die aan een project worden toegevoegd met een buildtype van Inhoud. | pack://application:,,,/MyContentFile.xaml |
| Oorsprongsite | Bestanden die aan een project worden toegevoegd met een buildtype None. | pack://siteoforigin:,,,/MySiteOfOriginFile.xaml |
| Toepassingscode | XAML-resources met een gecompileerde codeachter. – of – XAML-bestanden die worden toegevoegd aan een project met een buildtype van Page. |
pack://application:,,,/MyResourceFile
.xaml
|
Opmerking
Zie WPF-toepassingsresource, -inhoud en gegevensbestandenvoor meer informatie over toepassingsgegevensbestanden en pakket-URI's.
Bestanden van deze inhoudstypen kunnen worden genavigeerd door de gebruiker of programmatisch:
gebruikersnavigatie. De gebruiker navigeert door op een Hyperlink element te klikken.
Programmatische Navigatie. De toepassing navigeert zonder tussenkomst van de gebruiker, bijvoorbeeld door de eigenschap NavigationWindow.Source in te stellen.
Browsernavigatiebeveiliging
Browsernavigatie wordt alleen als veilig beschouwd onder de volgende omstandigheden:
gebruikersnavigatie. De gebruiker navigeert door te klikken op een Hyperlink element dat zich in de hoofd-NavigationWindowbevindt, niet in een geneste Frame.
Zone. De inhoud die wordt genavigeerd, bevindt zich op internet of het lokale intranet.
Protocol. Het gebruikte protocol is ofwel http-, https-, bestandof mailto.
Als een XBAP probeert te navigeren naar inhoud op een manier die niet aan deze voorwaarden voldoet, wordt er een SecurityException gegenereerd.
Beveiligingsinstellingen voor webnavigatiesoftware
De beveiligingsinstellingen op uw computer bepalen welke toegang wordt verleend aan alle webbrowsers. Browsesoftware bevat toepassingen of onderdelen die gebruikmaken van de WinINet- of UrlMon API's, waaronder Internet Explorer en PresentationHost.exe.
Internet Explorer biedt een mechanisme waarmee u de functionaliteit kunt configureren die mag worden uitgevoerd door of vanuit Internet Explorer, waaronder:
.NET Framework-afhankelijke onderdelen
ActiveX-besturingselementen en -invoegtoepassingen
Downloaden
Scripts schrijven
Gebruikersverificatie
De verzameling van functionaliteit die op deze manier kan worden beveiligd, wordt per zone geconfigureerd voor de Internet, Intranet, vertrouwde sitesen beperkte sites zones. In de volgende stappen wordt beschreven hoe u uw beveiligingsinstellingen configureert:
Open het Configuratiescherm.
Klik op netwerk- en internet- en klik vervolgens op internetopties.
Het dialoogvenster Internetopties wordt weergegeven.
Selecteer op het tabblad Beveiliging de zone waarvoor u de beveiligingsinstellingen wilt configureren.
Klik op de knop Aangepast niveau.
Het dialoogvenster Beveiligingsinstellingen wordt weergegeven en u kunt de beveiligingsinstellingen voor de geselecteerde zone configureren.
Opmerking
U kunt ook naar het dialoogvenster Internetopties gaan vanuit Internet Explorer. Klik op Extra en klik vervolgens op Internetopties.
Vanaf Windows Internet Explorer 7 zijn de volgende beveiligingsinstellingen voor .NET Framework opgenomen:
Los XAML. Hiermee bepaalt u of Internet Explorer naar en losse XAML-bestanden kan navigeren. (Opties voor inschakelen, uitschakelen en vragen om bevestiging).
XAML-browsertoepassingen. Hiermee bepaalt u of Internet Explorer naar XBAPs kan navigeren en uitvoeren. (Opties voor inschakelen, uitschakelen en vragen om bevestiging).
Deze instellingen zijn standaard allemaal ingeschakeld voor de Internet, Lokaal intraneten vertrouwde sites zones, en uitgeschakeld voor de beperkte sites zone.
Beveiligingsgerelateerde WPF-registerinstellingen
Naast de beveiligingsinstellingen die beschikbaar zijn via internetopties, zijn de volgende registerwaarden beschikbaar voor het selectief blokkeren van een aantal beveiligingsgevoelige WPF-functies. De waarden worden gedefinieerd onder de volgende sleutel:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Windows Presentation Foundation\Features
De volgende tabel bevat de waarden die kunnen worden ingesteld.
| Waardenaam | Waardetype | Waardegegevens |
|---|---|---|
| XBAPDisallow | REG_DWORD | 1 te weigeren; 0 om toe te staan. |
| LosseXamlVerboden | REG_DWORD | 1 te weigeren; 0 om toe te staan. |
| WebBrowserBlokkeren | REG_DWORD | 1 te weigeren; 0 om toe te staan. |
| MediaAudioVerbieden | REG_DWORD | 1 te weigeren; 0 om toe te staan. |
| MediaAfbeeldingVerbieden | REG_DWORD | 1 te weigeren; 0 om toe te staan. |
| MediaVideoVerbied | REG_DWORD | 1 te weigeren; 0 om toe te staan. |
| ScriptInteropVerboden | REG_DWORD | 1 te weigeren; 0 om toe te staan. |
Webbrowserbesturing en functie-instellingen
Het besturingselement WPF WebBrowser kan worden gebruikt voor het hosten van webinhoud. Het WPF WebBrowser besturingselement omsluit het onderliggende WebBrowser ActiveX-besturingselement. WPF biedt enige ondersteuning voor het beveiligen van uw toepassing wanneer u het WPF-WebBrowser-besturingselement gebruikt om niet-vertrouwde webinhoud te hosten. Sommige beveiligingsfuncties moeten echter rechtstreeks door de toepassingen worden toegepast met behulp van het besturingselement WebBrowser. Zie WebBrowser Control Overviews and Tutorialsvoor meer informatie over het WebBrowser ActiveX-besturingselement.
Opmerking
Deze sectie is ook van toepassing op het besturingselement Frame omdat het de WebBrowser gebruikt om naar HTML-inhoud te navigeren.
Als het WPF-besturingselement WebBrowser wordt gebruikt om niet-vertrouwde webinhoud te hosten, moet uw toepassing een gedeeltelijk vertrouwen AppDomain gebruiken om te helpen uw toepassingscode te isoleren van mogelijk schadelijke HTML-scriptcode. Dit geldt met name als uw toepassing communiceert met het gehoste script met behulp van de methode InvokeScript en de eigenschap ObjectForScripting. Zie WPF Add-Ins Overviewvoor meer informatie.
Als uw toepassing gebruikmaakt van het WPF-WebBrowser-besturingselement, kunt u de beveiliging verbeteren en aanvallen beperken door internet Explorer-functiebesturingselementen in te schakelen. Functiebesturingselementen zijn toevoegingen aan Internet Explorer waarmee beheerders en ontwikkelaars functies van Internet Explorer en toepassingen kunnen configureren die als host fungeren voor het ActiveX-besturingselement webbrowser, dat door het WPF-WebBrowser-besturingselement wordt verpakt. Functiebesturingselementen kunnen worden geconfigureerd met behulp van de functie CoInternetSetFeatureEnabled of door waarden in het register te wijzigen. Zie Inleiding tot functiebesturingselementen en besturingselementen voor internetfunctiesvoor meer informatie over functiebesturingselementen.
Als u een zelfstandige WPF-toepassing ontwikkelt die gebruikmaakt van het besturingselement WPF WebBrowser, schakelt WPF automatisch de volgende functiebesturingselementen voor uw toepassing in.
| Functiebeheer |
|---|
| FEATURE_MIME_HANDLING |
| FEATURE_MIME_SNIFFING |
| FEATURE_OBJECT_CACHING |
| FEATURE_SAFE_BINDTOOBJECT |
| FUNCTIE_VENSTER_BEPERKINGEN |
| KENMERK_ZONEVERHOGING |
| FUNCTIE_BEperk_bestandsdownload |
| FEATURE_RESTRICT_ACTIVEXINSTALL |
| FUNCTIE_ADDON_BEHEER |
| FUNCTIE_HTTP_GEBRUIKERSNAAM_WACHTWOORD_DEACTIVEREN |
| FUNCTIE_BEVEILIGINGSBAND |
| Kenmerk_UNC_OpslaanBestandscontrole |
| FEATURE_VALIDATE_NAVIGATE_URL |
| FUNCTIE_UITSCHAKELEN_TELNET_PROTOCOL |
| FEATURE_WEBOC_POPUPMANAGEMENT |
| FUNCTIE_UITSCHAKELEN_OUDE_COMPRESSIE |
| FEATURE_SSLUX |
Omdat deze functiebesturingselementen onvoorwaardelijk zijn ingeschakeld, kan een toepassing met volledige vertrouwensmachtigingen hierdoor worden beperkt. Als er in dit geval geen beveiligingsrisico is voor de specifieke toepassing en de inhoud die deze host, kan het bijbehorende functiebeheer worden uitgeschakeld.
Functiebesturingselementen worden toegepast door het proces dat het WebBrowser ActiveX-object instantieert. Als u daarom een zelfstandige toepassing maakt die naar niet-vertrouwde inhoud kan navigeren, kunt u overwegen om aanvullende functiebesturingselementen in te schakelen.
Opmerking
Deze aanbeveling is gebaseerd op algemene aanbevelingen voor MSHTML- en SHDOCVW-hostbeveiliging. Zie De veelgestelde vragen over MSHTML-hostbeveiliging: deel I van II en De veelgestelde vragen over MSHTML-hostbeveiliging: deel II van II.
Voor uw uitvoerbare bestand kunt u de volgende functiebesturingselementen inschakelen door de registerwaarde in te stellen op 1.
| Functiebeheer |
|---|
| FEATURE_ACTIVEX_HERBESTEMMINGDETECTIE |
| FEATURE_BLOCK_LMZ_IMG |
| FEATURE_BLOCK_LMZ_OBJECT |
| FEATURE_BLOCK_LMZ_SCRIPT |
| FEATURE_RESTRICT_RES_TO_LMZ |
| FEATURE_RESTRICT_ABOUT_PROTOCOL_IE7 |
| FUNCTIE_TOON_APP_PROTOCOL_WAARSCHUWINGS_DIALOOG |
| FUNCTIE_LOKALEMACHINE_VERGRENDELING |
| FUNCTIE_FORCEER_ADRES_EN_STATUS |
| FUNCTIE_BEPERKTE_ZONE_WANNEER_BESTAND_NIET_GEVONDEN |
Voor het uitvoerbare bestand kunt u het volgende functiebeheer uitschakelen door de registerwaarde in te stellen op 0.
| Functiebeheer |
|---|
| FUNCTIE_INSCHAKELEN_SCRIPT_PASTE_URLACTIE_BIJ_PROMPT |
Als u een gedeeltelijk vertrouwde XAML-browsertoepassing (XBAP) uitvoert die een WPF WebBrowser-besturingselement bevat in Windows Internet Explorer, host WPF het ActiveX-besturingselement WebBrowser binnen de adresruimte van het Internet Explorer-proces. Omdat het ActiveX-besturingselement WebBrowser wordt gehost in het Internet Explorer-proces, zijn alle functiebesturingselementen voor Internet Explorer ook ingeschakeld voor het ActiveX-besturingselement WebBrowser.
XBAPs die worden uitgevoerd in Internet Explorer krijgen ook een extra beveiligingsniveau in vergelijking met normale zelfstandige toepassingen. Deze extra beveiliging komt doordat Internet Explorer, en daarom het ActiveX-besturingselement WebBrowser, standaard wordt uitgevoerd in de beveiligde modus op Windows Vista en Windows 7. Zie Understanding and Working in Protected Mode Internet Explorervoor meer informatie over de beveiligde modus.
Opmerking
Als u probeert een XBAP uit te voeren met een WPF-WebBrowser besturingselement in Firefox, terwijl u zich in de internetzone bevindt, wordt er een SecurityException gegenereerd. Dit komt door WPF-beveiligingsbeleid.
APTCA-assembly's uitschakelen voor gedeeltelijk vertrouwde clienttoepassingen
Wanneer beheerde assembly's worden geïnstalleerd in de algemene assemblycache (GAC), worden ze volledig vertrouwd omdat de gebruiker expliciete machtigingen moet verlenen om ze te installeren. Omdat ze volledig vertrouwd zijn, kunnen alleen volledig vertrouwde beheerde clienttoepassingen ze gebruiken. Als u wilt toestaan dat gedeeltelijk vertrouwde toepassingen deze kunnen gebruiken, moeten ze worden gemarkeerd met de AllowPartiallyTrustedCallersAttribute (APTCA). Alleen assemblies die zijn getest op veiligheid voor uitvoering in een gedeeltelijk vertrouwensniveau, moeten worden gemarkeerd met dit kenmerk.
Het is echter mogelijk dat een APTCA-assembly een beveiligingsfout vertoont nadat deze in de GAC is geïnstalleerd. Zodra een beveiligingsfout is gedetecteerd, kunnen assembly-uitgevers een beveiligingsupdate produceren om het probleem op bestaande installaties op te lossen en om te beschermen tegen installaties die kunnen optreden nadat het probleem is gedetecteerd. Een optie voor de update is het verwijderen van de assembly, hoewel dat andere volledig vertrouwde clienttoepassingen die gebruikmaken van de assembly kunnen breken.
WPF biedt een mechanisme waarmee een APTCA-assembly kan worden uitgeschakeld voor gedeeltelijk vertrouwde XBAPs zonder de APTCA-assembly te verwijderen.
Als u een APTCA-assembly wilt uitschakelen, moet u een speciale registersleutel maken:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\policy\APTCA\<AssemblyFullName>, FileVersion=<AssemblyFileVersion>
Hieronder ziet u een voorbeeld:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\policy\APTCA\aptcagac, Version=1.0.0.0, Culture=neutral, PublicKeyToken=215e3ac809a0fea7, FileVersion=1.0.0.0
Met deze sleutel wordt een vermelding voor de APTCA-assembly tot stand gebracht. U moet ook een waarde maken in deze sleutel waarmee de assembly wordt ingeschakeld of uitgeschakeld. Hier volgen de details van de waarde:
Waardenaam: APTCA_FLAG.
Waardetype: REG_DWORD.
Waardegegevens: 1 om uit te schakelen; 0 inschakelen.
Als een assembly moet worden uitgeschakeld voor gedeeltelijk vertrouwde clienttoepassingen, kunt u een update schrijven waarmee de registersleutel en -waarde worden gemaakt.
Opmerking
Core .NET Framework-assembly's worden niet beïnvloed door ze op deze manier uit te schakelen, omdat ze vereist zijn om beheerde toepassingen uit te voeren. Ondersteuning voor het uitschakelen van APTCA-assembly's is voornamelijk gericht op toepassingen van derden.
Sandbox-gedrag voor losse XAML-bestanden
Losse XAML-bestanden zijn uitsluitend markup XAML-bestanden die niet afhankelijk zijn van code-behind, gebeurtenishandler of toepassingsspecifieke assembly. Wanneer er naar losse XAML-bestanden rechtstreeks vanuit de browser wordt genavigeerd, worden ze geladen in een beveiligingssandbox op basis van de standaardmachtigingen voor de internetzone.
Het beveiligingsgedrag verschilt echter wanneer losse XAML-bestanden worden genavigeerd naar een NavigationWindow of Frame in een zelfstandige toepassing.
In beide gevallen neemt het losse XAML-bestand dat wordt genavigeerd de machtigingen van de hosttoepassing over. Dit gedrag kan echter ongewenst zijn vanuit een beveiligingsperspectief, met name als een los XAML-bestand is geproduceerd door een entiteit die niet vertrouwd of onbekend is. Deze type inhoud staat bekend als externe inhoud, en zowel Frame als NavigationWindow kunnen worden geconfigureerd om deze inhoud te isoleren bij het navigeren er naartoe. Isolatie wordt bereikt door de eigenschap SandboxExternalContent op true in te stellen, zoals wordt weergegeven in de volgende voorbeelden voor Frame en NavigationWindow:
<Frame
Source="ExternalContentPage.xaml"
SandboxExternalContent="True">
</Frame>
<!-- Sandboxing external content using NavigationWindow-->
<NavigationWindow
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
Source="ExternalContentPage.xaml"
SandboxExternalContent="True">
</NavigationWindow>
Met deze instelling wordt externe inhoud geladen in een proces dat losstaat van het proces dat als host fungeert voor de toepassing. Dit proces is beperkt tot de standaardmachtigingsset voor de internetzone, zodat deze effectief wordt geïsoleerd van de hostingtoepassing en de clientcomputer.
Opmerking
Hoewel navigatie om XAML-bestanden los te maken van een NavigationWindow of Frame in een zelfstandige toepassing wordt geïmplementeerd op basis van de hostinfrastructuur van de WPF-browser, waarbij het PresentationHost-proces wordt betrokken, is het beveiligingsniveau iets minder dan wanneer de inhoud rechtstreeks in Internet Explorer op Windows Vista en Windows 7 wordt geladen (die nog steeds via PresentationHost zou worden uitgevoerd). Dit komt doordat een zelfstandige WPF-toepassing met behulp van een webbrowser niet de extra beveiligingsfunctie voor de beveiligde modus van Internet Explorer biedt.
Bronnen voor het ontwikkelen van WPF-toepassingen die de beveiliging bevorderen
Hier volgen enkele aanvullende bronnen om WPF-toepassingen te ontwikkelen die de beveiliging bevorderen:
| Gebied | Hulpbron |
|---|---|
| Beheerde code | beveiligingsrichtlijnen voor patronen en praktijken voor applicaties |
| CAS | Toegangsbeveiliging van Code |
| ClickOnce | ClickOnce-Beveiliging en Implementatie |
| WPF (Windows Presentation Foundation) | WPF Beveiliging onder Gedeeltelijk Vertrouwen |
Zie ook
.NET Desktop feedback