Zabezpečení (WPF)

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 ), bez ohledu na to, jestli 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 najdete v tématu Přehled doplňků WPF.

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.

Upozorňující

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 prostoru zabezpečení s částečným vztahem důvěryhodnosti, což je omezené na výchozí sadu oprávnění zóny 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 vztahu důvěryhodnosti v závislosti na zóně zabezpečení 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:

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:

Vztah mezi navigacemi v aplikaci a navigaci v prohlížeči

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
Prostředek Soubory, které jsou přidány do projektu s typem sestavení Resource. pack://application:,,,/MyResourceFile.xaml
Content Soubory přidané do projektu s typem sestavení obsahu 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 přejde kliknutím na Hyperlink prvek, který je uvnitř hlavní NavigationWindow, ne vnořený 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, SecurityException vyvolá se 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 komponentu , 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

  • Soubory ke stažení

  • 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í:

  1. Otevřete Ovládací panely.

  2. 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.

  3. Na kartě Zabezpečení vyberte zónu, pro které chcete nakonfigurovat nastavení zabezpečení.

  4. 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.

    Snímek obrazovky s dialogovým oknem Nastavení zabezpečení

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ý KÓD 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.

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 Data hodnoty
XBAPDisallow REG_DWORD 1 k zákazu; 0, aby to bylo možné.
LooseXamlDisallow REG_DWORD 1 k zákazu; 0, aby to bylo možné.
WebBrowserDisallow REG_DWORD 1 k zákazu; 0, aby to bylo možné.
MediaAudioDisallow REG_DWORD 1 k zákazu; 0, aby to bylo možné.
MediaImageDisallow REG_DWORD 1 k zákazu; 0, aby to bylo možné.
MediaVideoDisallow REG_DWORD 1 k zákazu; 0, aby to bylo možné.
ScriptInteropDisallow REG_DWORD 1 k zákazu; 0, aby to bylo možné.

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 zabalí základní ovládací prvek ActiveX webBrowser. 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 najdete v tématu Přehled doplňků WPF.

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 aplikace Internet Explorer, které správcům a vývojářům umožňují konfigurovat funkce aplikace Internet Explorer a aplikace, které hostují ovládací prvek ActiveX webBrowser, který ovládací prvek WPF WebBrowser zabalí. 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.

Ovládací prvek funkce
FEATURE_MIME_HANDLING
FEATURE_MIME_SNIFFING
FEATURE_OBJECT_CACHING
FEATURE_SAFE_BINDTOOBJECT
FEATURE_WINDOW_RESTRICTIONS
FEATURE_ZONE_ELEVATION
FEATURE_RESTRICT_FILEDOWNLOAD
FEATURE_RESTRICT_ACTIVEXINSTALL
FEATURE_ADDON_MANAGEMENT
FEATURE_HTTP_USERNAME_PASSWORD_DISABLE
FEATURE_SECURITYBAND
FEATURE_UNC_SAVEDFILECHECK
FEATURE_VALIDATE_NAVIGATE_URL
FEATURE_DISABLE_TELNET_PROTOCOL
FEATURE_WEBOC_POPUPMANAGEMENT
FEATURE_DISABLE_LEGACY_COMPRESSION
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.

Ovládací prvek funkce
FEATURE_ACTIVEX_REPURPOSEDETECTION
FEATURE_BLOCK_LMZ_IMG
FEATURE_BLOCK_LMZ_OBJECT
FEATURE_BLOCK_LMZ_SCRIPT
FEATURE_RESTRICT_RES_TO_LMZ
FEATURE_RESTRICT_ABOUT_PROTOCOL_IE7
FEATURE_SHOW_APP_PROTOCOL_WARN_DIALOG
FEATURE_LOCALMACHINE_LOCKDOWN
FEATURE_FORCE_ADDR_AND_STATUS
FEATURE_RESTRICTED_ZONE_WHEN_FILE_NOT_FOUND

U spustitelného souboru zvažte zakázání následujícího ovládacího prvku funkce nastavením hodnoty registru na 0.

Ovládací prvek funkce
FEATURE_ENABLE_SCRIPT_PASTE_URLACTION_IF_PROMPT

Pokud spustíte částečně důvěryhodnou aplikaci prohlížeče XAML (XBAP), která obsahuje ovládací prvek WPF v aplikaci Windows Internet Explorer, WPF WebBrowser hostuje ovládací prvek WebBrowser ActiveX v adresní prostor procesu Aplikace Internet Explorer. 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, zatímco v internetové zóně, SecurityException bude vyvolán. 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 tak, aby byla bezpečná pro spuštění v částečném vztahu důvěryhodnosti.

Nicméně, je možné, aby sestavení APTCA vykazuje chybu zabezpečení po instalaci do 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 , aby bylo možné povolit.

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ém kódu, obslužné rutině události nebo sestavení specifické pro aplikaci. Když se volné soubory XAML přejdou přímo z prohlížeče, načtou se do sandboxu zabezpečení na základě výchozí sady oprávnění zóny Internetu.

Chování zabezpečení se ale liší, když se volné soubory XAML přejdou ze NavigationWindow samostatné aplikace nebo Frame ze samostatné aplikace.

V obou případech volný soubor XAML, který se přepíná tak, aby dědil 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 Frame NavigationWindow lze ho nakonfigurovat tak, aby ho při přechodu izoloval. 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 ze NavigationWindow Frame samostatné aplikace nebo v samostatné aplikaci implementována na základě infrastruktury hostování prohlížeče WPF, která zahrnuje proces PresentationHost, úroveň zabezpečení je o něco menší, 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 Prostředek
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 Částečné zabezpečení důvěryhodnosti WPF

Viz také