Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Při vývoji samostatných aplikací WINDOWS Presentation Foundation (WPF) a aplikací hostovaných v prohlížeči je nutné zvážit model zabezpečení. Samostatné aplikace WPF se spouštějí s neomezenými oprávněními (sada oprávnění CASFullTrust ), ať už jsou nasazené pomocí Instalační služby systému Windows (.msi), XCopy nebo ClickOnce. Nasazení částečných důvěryhodných samostatných aplikací WPF s technologií ClickOnce není podporováno. Hostitelská aplikace s úplným vztahem důvěryhodnosti však může vytvořit částečný vztah důvěryhodnosti AppDomain pomocí modelu doplňku .NET Framework. Další informace naleznete v tématu WPF Add-Ins Přehled.
Aplikace hostované v prohlížeči WPF jsou hostovány v prohlížeči Windows Internet Explorer nebo Firefox a mohou to být aplikace prohlížeče XAML (XBAPs) nebo volné dokumenty jazyka XAML (Extensible Application Markup Language) Další informace naleznete v tématu WPF XAML Browser Applications Overview.
Výstraha
XBAPs vyžadují, aby fungovaly starší prohlížeče, jako je Internet Explorer a starší verze Firefoxu. Tyto starší prohlížeče jsou obvykle nepodporované ve Windows 10 a Windows 11. Moderní prohlížeče už kvůli rizikům zabezpečení nepodporují technologii potřebnou pro aplikace XBAP. Moduly plug-in, které umožňují XBAPs, se už nepodporují. Další informace najdete v tématu nejčastější dotazy k aplikacím hostovaným v prohlížeči WPF (XBAP).
Aplikace hostované v prohlížeči WPF se ve výchozím nastavení spouštějí v izolovaném bezpečnostním prostoru s omezenou důvěryhodností, což je omezené na výchozí sadu oprávnění pro zónu Internetu CAS. Tím se efektivně izolují aplikace hostované v prohlížeči WPF od klientského počítače stejným způsobem, jakým byste očekávali izolaci typických webových aplikací. XBAP může zvýšit oprávnění až do úplného důvěryhodného nastavení v závislosti na zóně zabezpečení na základě adresy URL nasazení a konfiguraci zabezpečení klienta. Další informace najdete v tématu Zabezpečení částečné důvěryhodnosti WPF.
Toto téma popisuje model zabezpečení pro samostatné aplikace WPF (Windows Presentation Foundation) a aplikace hostované v prohlížeči.
Toto téma obsahuje následující části:
Zakázání sestavení APTCA pro částečně důvěryhodné klientské aplikace
Zdroje informací pro vývoj aplikací WPF, které podporují zabezpečení
Bezpečná navigace
U XBAPs wpF rozlišuje dva typy navigace: aplikace a prohlížeč.
Navigace v aplikaci je navigace mezi položkami obsahu v aplikaci hostované prohlížečem. Navigace v prohlížeči je navigace , která mění obsah a adresu URL umístění samotného prohlížeče. Vztah mezi procházením aplikací (obvykle XAML) a prohlížečem (obvykle HTML) je znázorněný na následujícím obrázku:
Typ obsahu, který je považován za bezpečný pro procházení XBAP, je primárně určen, zda se používá navigace v aplikaci nebo navigace v prohlížeči.
Zabezpečení navigace aplikací
Navigace v aplikaci je považována za bezpečnou, pokud ji lze identifikovat pomocí identifikátoru URI balíčku, který podporuje čtyři typy obsahu:
| Typ obsahu | Popis | Příklad identifikátoru URI |
|---|---|---|
| Zdroj | Soubory, které jsou přidány do projektu s typem sestavení Resource. | pack://application:,,,/MyResourceFile.xaml |
| Obsah | Soubory, které jsou přidány do projektu s typem sestavení Content. | pack://application:,,,/MyContentFile.xaml |
| Lokalita původu | Soubory, které jsou přidány do projektu s typem sestavení None. | pack://siteoforigin:,,,/MySiteOfOriginFile.xaml |
| Kód aplikace | Prostředky XAML, které mají zkompilovaný kód za sebou. nebo Soubory XAML, které jsou přidány do projektu s typem sestavení Page. |
pack://application:,,,/MyResourceFile
.xaml
|
Poznámka:
Další informace o datových souborech aplikací a identifikátorech URI balíčků naleznete v tématu Prostředek aplikace WPF, obsah a datové soubory.
Soubory těchto typů obsahu můžou procházet buď uživatel, nebo programově:
Navigace uživatele. Uživatel přejde kliknutím na Hyperlink prvek.
Programová navigace Aplikace prochází bez zásahu uživatele, například nastavením NavigationWindow.Source vlastnosti.
Zabezpečení navigace v prohlížeči
Navigace v prohlížeči se považuje za bezpečnou pouze za následujících podmínek:
Navigace uživatele. Uživatel naviguje kliknutím na prvek Hyperlink, který je uvnitř hlavního NavigationWindow, ne ve vnořeném Frame.
Zóna. Obsah, na který se přechází, se nachází na internetu nebo v místním intranetu.
Protokol. Použitý protokol je http, https, soubor nebo mailto.
Pokud se XBAP pokusí přejít na obsah způsobem, který nevyhovuje těmto podmínkám, vyvolá se SecurityException chyba.
Nastavení zabezpečení softwaru pro procházení webu
Nastavení zabezpečení na vašem počítači určuje přístup, který má udělený jakýkoli software pro procházení webu. Software pro procházení webu zahrnuje jakoukoli aplikaci nebo součást, která používá rozhraní API WinINet nebo UrlMon , včetně Internet Exploreru a PresentationHost.exe.
Internet Explorer poskytuje mechanismus, pomocí kterého můžete nakonfigurovat funkce, které mohou být spouštěné aplikací Internet Explorer nebo z aplikace Internet Explorer, včetně následujících:
Komponenty rozhraní .NET Framework
Ovládací prvky ActiveX a moduly plug-in
Stahování souborů
Skriptování
Ověřování uživatelů
Kolekce funkcí, které lze tímto způsobem zabezpečit, se konfiguruje na základě jednotlivých zón pro zóny pro zóny internetu, intranetu, důvěryhodných webů a zón s omezeným přístupem. Následující kroky popisují, jak nakonfigurovat nastavení zabezpečení:
Otevřete Ovládací panel.
Klepněte na položku Síť a internet a potom klepněte na příkaz Možnosti internetu.
Zobrazí se dialogové okno Možnosti internetu.
Na kartě Zabezpečení vyberte zónu, pro které chcete nakonfigurovat nastavení zabezpečení.
Klikněte na tlačítko Vlastní úroveň .
Zobrazí se dialogové okno Nastavení zabezpečení a můžete nakonfigurovat nastavení zabezpečení pro vybranou zónu.
Poznámka:
Můžete se také dostat do dialogového okna Možnosti internetu z Internet Exploreru. Klepněte na tlačítko Nástroje a potom klepněte na tlačítko Možnosti internetu.
Počínaje aplikací Windows Internet Explorer 7 jsou zahrnuta následující nastavení zabezpečení speciálně pro rozhraní .NET Framework:
Volný XAML. Určuje, zda může Internet Explorer přejít k souborům XAML a uvolnit je. (Povolení, zakázání a zobrazení výzvy)
Aplikace prohlížeče XAML. Určuje, jestli Internet Explorer může přejít na XBAPs a spustit je. (Povolení, zakázání a zobrazení výzvy)
Ve výchozím nastavení jsou všechna tato nastavení povolená pro zóny internetu, místního intranetu a důvěryhodných webů a zakázaná pro zónu s omezeným přístupem.
Nastavení registru WPF související se zabezpečením
Kromě nastavení zabezpečení dostupných prostřednictvím možností internetu jsou k dispozici následující hodnoty registru pro selektivní blokování řady funkcí WPF citlivých na zabezpečení. Hodnoty jsou definovány pod následujícím klíčem:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Windows Presentation Foundation\Features
Následující tabulka uvádí hodnoty, které je možné nastavit.
| Název hodnoty | Typ hodnoty | Údaj hodnoty |
|---|---|---|
| XBAPDisallow | REG_DWORD | 1 znamená zákaz; 0 znamená povolit. |
| LooseXamlDisallow | REG_DWORD | 1 znamená zákaz; 0 znamená povolit. |
| Zakázání webového prohlížeče | REG_DWORD | 1 znamená zákaz; 0 znamená povolit. |
| MediaAudioOdepřít | REG_DWORD | 1 znamená zákaz; 0 znamená povolit. |
| ZakázatMediálníObrázek | REG_DWORD | 1 znamená zákaz; 0 znamená povolit. |
| MediaVideoDisallow | REG_DWORD | 1 znamená zákaz; 0 znamená povolit. |
| ScriptInteropDisallow | REG_DWORD | 1 znamená zákaz; 0 znamená povolit. |
Ovládací prvky WebBrowser a ovládací prvky funkcí
Ovládací prvek WPF WebBrowser lze použít k hostování webového obsahu. Ovládací prvek WPF WebBrowser obaluje základní ovládací prvek WebBrowser ActiveX. WPF poskytuje určitou podporu zabezpečení aplikace při použití ovládacího prvku WPF WebBrowser k hostování nedůvěryhodného webového obsahu. Některé funkce zabezpečení však musí být použity přímo aplikacemi používajícími WebBrowser ovládací prvek. Další informace o ovládacím prvku ActiveX WebBrowser naleznete v tématu Přehledy a kurzy ovládacích prvků WebBrowser.
Poznámka:
Tento oddíl se vztahuje také na Frame ovládací prvek, protože používá WebBrowser k přechodu na obsah HTML.
Pokud se ovládací prvek WPF WebBrowser používá k hostování nedůvěryhodného webového obsahu, měla by vaše aplikace použít částečnou důvěryhodnost AppDomain , která pomáhá izolovat kód aplikace před potenciálně škodlivým kódem skriptu HTML. To platí zejména v případě, že vaše aplikace komunikuje s hostovaným skriptem pomocí InvokeScript metody a ObjectForScripting vlastnosti. Další informace naleznete v tématu WPF Add-Ins Přehled.
Pokud vaše aplikace používá ovládací prvek WPF WebBrowser , dalším způsobem, jak zvýšit zabezpečení a zmírnit útoky, je povolit řízení funkcí Internet Exploreru. Ovládací prvky funkcí jsou doplňky Internet Exploreru, které umožňují správcům a vývojářům konfigurovat funkce Internet Exploreru a aplikace, které obsahují ovládací prvek ActiveX WebBrowser, jenž je obalen ovládacím prvkem WPF WebBrowser. Ovládací prvky funkcí je možné konfigurovat pomocí funkce CoInternetSetFeatureEnabled nebo změnou hodnot v registru. Další informace o ovládacích prvcích funkcí naleznete v tématu Úvod k ovládacím prvkům funkce a ovládacím prvkům internetu.
Pokud vyvíjíte samostatnou aplikaci WPF, která používá ovládací prvek WPF, WPF WebBrowser automaticky povolí následující ovládací prvky funkce pro vaši aplikaci.
| Řízení funkcí |
|---|
| FUNKCE_ZPRACOVÁNÍ_MIME |
| FEATURE_MIME_SNIFFING |
| FUNKCE_UKLÁDÁNÍ_OBJEKTŮ_DO_MEZIPAMĚTI |
| FEATURE_SAFE_BINDTOOBJECT |
| OMEZENÍ OKNA FUNKCÍ |
| VÝŠKA ZÓNY FUNKCE |
| FUNKCE_OMEZENÍ_STAHOVÁNÍ_SOUBORŮ |
| FUNKCE_OMEZENÍ_INSTALACE_ACTIVEX |
| SPRÁVA_ROZŠÍŘENÍ |
| FEATURE_HTTP_USERNAME_PASSWORD_DISABLE |
| FUNKCE_BEZPEČNOSTNÍPÁS |
| FUNKCE_UNC_KONTROLAULOŽENÉHOSOUBORU |
| FEATURE_VALIDATE_NAVIGATE_URL |
| Vlastnost: Zakázat Telnet protokol |
| FUNKCE_WEBOC_SPRÁVIPOPUPŮ |
| Funkce_Zakázat_Starší_Kompresi |
| FEATURE_SSLUX |
Vzhledem k tomu, že jsou tyto ovládací prvky funkcí povoleny bezpodmínečně, může být aplikace s plnou důvěryhodností narušena. V takovém případě platí, že pokud pro konkrétní aplikaci neexistuje žádné bezpečnostní riziko a obsah, který hostuje, může být odpovídající řízení funkcí zakázáno.
Ovládací prvky funkcí se použijí procesem vytvoření instance objektu ActiveX WebBrowser. Proto pokud vytváříte samostatnou aplikaci, která může přejít na nedůvěryhodný obsah, měli byste vážně zvážit povolení dalších ovládacích prvků funkcí.
Poznámka:
Toto doporučení vychází z obecných doporučení pro zabezpečení hostitele MSHTML a SHDOCVW. Další informace naleznete v tématu MSHTML Host Security Faq: Část I ii a MSHTML Host Security Faq: Část II ii.
U spustitelného souboru zvažte povolení následujících ovládacích prvků funkcí nastavením hodnoty registru na hodnotu 1.
| Řízení funkcí |
|---|
| FEATURE_ACTIVEX_REPURPOSEDETECTION |
| FEATURE_BLOCK_LMZ_IMG |
| FEATURE_BLOCK_LMZ_OBJECT |
| FEATURE_BLOCK_LMZ_SCRIPT |
| OMEZENÍ_ZDROJŮ_NA_LMZ_FEATURE |
| FEATURE_RESTRICT_ABOUT_PROTOCOL_IE7 |
| FUNKCE_ZOBRAZIT_VAROVÁNÍ_DIALOGU_APLIKAČNÍHO_PROTOKOLU |
| FEATURE_LOCALMACHINE_LOCKDOWN |
| Funkce_vynutit_adresu_a_stav |
| Vlastnost_Omezená_Oblast_Pokud_Soubor_Nenalezen |
U spustitelného souboru zvažte zakázání následujícího ovládacího prvku funkce nastavením hodnoty registru na 0.
| Řízení funkcí |
|---|
| FEATURE_ENABLE_SCRIPT_PASTE_URLACTION_IF_PROMPT |
Pokud spustíte aplikaci prohlížeče XAML (XBAP) s nízkou úrovní důvěryhodnosti, která obsahuje ovládací prvek WPF, pak WPF v procesu Internet Exploreru hostuje ovládací prvek WebBrowser ActiveX v jeho adresním prostoru. Vzhledem k tomu, že ovládací prvek ActiveX webBrowser je hostovaný v procesu Internet Exploreru, jsou pro ovládací prvek ActiveX webBrowser povoleny také všechny ovládací prvky funkcí pro aplikaci Internet Explorer.
XBAPs spuštěné v Internet Exploreru také získají další úroveň zabezpečení v porovnání s normálními samostatnými aplikacemi. Toto další zabezpečení je způsobeno tím, že Internet Explorer, a proto ovládací prvek ActiveX WebBrowser, běží ve výchozím nastavení v chráněném režimu v systému Windows Vista a Windows 7. Další informace o chráněném režimu naleznete v tématu Principy a práce v chráněném režimu Internet Explorer.
Poznámka:
Pokud se pokusíte spustit XBAP, který obsahuje WPF WebBrowser ovládací prvek ve Firefoxu a jste v internetové zóně, SecurityException bude vyhozen. Důvodem jsou zásady zabezpečení WPF.
Zakázání sestavení APTCA pro částečně důvěryhodné klientské aplikace
Když jsou spravovaná sestavení nainstalována do globální mezipaměti sestavení (GAC), stanou se plně důvěryhodnými, protože uživatel musí poskytnout explicitní oprávnění k jejich instalaci. Protože jsou plně důvěryhodné, můžou je používat pouze plně důvěryhodné klientské aplikace. Aby je mohly používat částečně důvěryhodné aplikace, musí být označené pomocí AllowPartiallyTrustedCallersAttribute (APTCA). Tímto atributem by měla být označena pouze sestavení, která byla testována a jsou bezpečná pro spuštění s částečnou důvěrou.
Nicméně je možné, aby sestavení APTCA vykazovalo bezpečnostní chybu po instalaci v GAC. Jakmile dojde k chybě zabezpečení, mohou vydavatelé sestavení vytvořit aktualizaci zabezpečení, která opraví problém u stávajících instalací a chrání před instalacemi, ke kterým může dojít po zjištění problému. Jednou z možností pro aktualizaci je odinstalace sestavení, i když to může narušit jiné plně důvěryhodné klientské aplikace, které používají sestavení.
WPF poskytuje mechanismus, pomocí kterého lze zakázat sestavení APTCA pro částečně důvěryhodné XBAPs bez odinstalace sestavení APTCA.
Pokud chcete zakázat sestavení APTCA, musíte vytvořit speciální klíč registru:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\policy\APTCA\<AssemblyFullName>, FileVersion=<AssemblyFileVersion>
Následující příklad ukazuje:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\policy\APTCA\aptcagac, Version=1.0.0.0, Culture=neutral, PublicKeyToken=215e3ac809a0fea7, FileVersion=1.0.0.0
Tento klíč vytvoří položku pro sestavení APTCA. V tomto klíči musíte také vytvořit hodnotu, která povolí nebo zakáže sestavení. Níže jsou uvedeny podrobnosti o hodnotě:
Název hodnoty: APTCA_FLAG.
Typ hodnoty: REG_DWORD.
Data hodnoty: 1 k zakázání; 0 k povolení.
Pokud je nutné zakázat sestavení pro částečně důvěryhodné klientské aplikace, můžete napsat aktualizaci, která vytvoří klíč a hodnotu registru.
Poznámka:
Základní sestavení rozhraní .NET Framework nejsou tímto způsobem ovlivněna zakázáním, protože jsou nutná ke spuštění spravovaných aplikací. Podpora zakázání sestavení APTCA se primárně zaměřuje na aplikace třetích stran.
Chování sandboxu pro volné soubory XAML
Volné soubory XAML jsou soubory XAML, které nespoléhají na žádný kód, obslužnou rutinu události nebo sestavení specifická pro aplikaci. Když jsou volné soubory XAML otevřeny přímo z prohlížeče, načtou se do sandboxu zabezpečení na základě sady oprávnění výchozí internetové zóny.
Chování zabezpečení se ale liší, když se volné soubory XAML navigují buď z NavigationWindow nebo Frame v samostatné aplikaci.
V obou případech volně navigovaný soubor XAML zdědí oprávnění své hostitelské aplikace. Toto chování však může být nežádoucí z hlediska zabezpečení, zejména pokud byl uvolněný soubor XAML vytvořen entitou, která není důvěryhodná nebo neznámá. Tento typ obsahu se označuje jako externí obsah a jak Frame, tak NavigationWindow lze nakonfigurovat tak, aby byl při navigaci izolován. Izolace je dosaženo nastavením SandboxExternalContent vlastnost true, jak je znázorněno v následujících příkladech pro Frame a 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>
Při tomto nastavení se externí obsah načte do procesu, který je oddělený od procesu hostujícího aplikaci. Tento proces je omezen na výchozí sadu oprávnění zóny Internetu a efektivně ho izoluje od hostitelské aplikace a klientského počítače.
Poznámka:
I když je navigace k volným souborům XAML buď ze NavigationWindow, nebo z Frame v samostatné aplikaci implementována na základě infrastruktury hostování prohlížeče WPF, která zahrnuje proces PresentationHost, je úroveň zabezpečení lehce nižší, než když je obsah načten přímo v Internet Exploreru v systému Windows Vista a Windows 7 (který by stále byl prostřednictvím PresentationHost). Důvodem je to, že samostatná aplikace WPF využívající webový prohlížeč neposkytuje další funkci zabezpečení chráněného režimu aplikace Internet Explorer.
Zdroje informací pro vývoj aplikací WPF, které podporují zabezpečení
Tady jsou některé další zdroje informací, které vám pomůžou s vývojem aplikací WPF, které podporují zabezpečení:
| Plocha | Zdroj |
|---|---|
| Spravovaný kód | Pokyny k zabezpečení vzorů a postupů pro aplikace |
| CAS | zabezpečení přístupu kódu |
| ClickOnce | ClickOnce – zabezpečení a nasazení |
| WPF (Windows Presentation Foundation) | Částečné zabezpečení pro důvěryhodnost WPF |
Viz také
- Částečné zabezpečení pro důvěryhodnost WPF
- Strategie zabezpečení WPF - Zabezpečení platformy
- strategie zabezpečení WPF – přípravy zabezpečení
- Pokyny k zabezpečení vzorů a postupů pro aplikace
- zabezpečení přístupu kódu
- ClickOnce – zabezpečení a nasazení
- XAML ve WPF
.NET Desktop feedback