Sdílet prostřednictvím


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 ), 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:

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

  1. Otevřete Ovládací panel.

  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ý 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 Ú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é