Megosztás a következőn keresztül:


Biztonság (WPF)

A Windows Presentation Foundation (WPF) önálló és böngésző által üzemeltetett alkalmazások fejlesztésekor figyelembe kell vennie a biztonsági modellt. A WPF önálló alkalmazásai korlátlan engedélyekkel (CASFullTrust engedélykészlettel) futnak, függetlenül attól, hogy a Windows Installer (.msi), az XCopy vagy a ClickOnce használatával lett-e üzembe helyezve. A részleges megbízhatóságú, különálló WPF-alkalmazások ClickOnce-nal való üzembe helyezése nem támogatott. A teljes megbízhatóságú gazdagép-alkalmazás azonban részleges megbízhatóságú AppDomain-t hozhat létre a .NET-keretrendszer bővítmény-modell segítségével. További információ: WPF Add-Ins Áttekintés.

A WPF böngésző által üzemeltetett alkalmazásokat a Windows Internet Explorer vagy a Firefox üzemelteti, és lehetnek XAML böngészőalkalmazások (XBAP-k) vagy laza bővíthető alkalmazásjelölő nyelvi (XAML) dokumentumok. További információt a WPF XAML böngészőalkalmazások áttekintésitalál.

Figyelmeztetés

Az XBAP-k működéséhez régi böngészőkre van szükség, például az Internet Explorerre és a Firefox régi verzióira. Ezek a régebbi böngészők általában nem támogatottak a Windows 10-ben és a Windows 11-ben. A modern böngészők már nem támogatják az XBAP-alkalmazásokhoz szükséges technológiát a biztonsági kockázatok miatt. Az XBAP-ket engedélyező beépülő modulok már nem támogatottak. További információ: A WPF böngésző által üzemeltetett alkalmazásokkal (XBAP) kapcsolatos gyakori kérdések.

A WPF böngésző által üzemeltetett alkalmazások alapértelmezés szerint részleges megbízhatósági biztonsági tesztkörnyezetben futnak, amely az alapértelmezett CASinternetes zónaengedély-készletre korlátozódik. Ez hatékonyan elkülöníti a WPF böngésző által üzemeltetett alkalmazásokat az ügyfélszámítógéptől ugyanúgy, ahogyan a tipikus webalkalmazások elkülönítését várná. Az XBAP az üzembe helyezési URL biztonsági zónájától és az ügyfél biztonsági konfigurációjától függően akár teljes megbízhatósági szintű jogosultságokat is emelhet. További információ: WPF részleges biztonsági megbízhatóság.

Ez a témakör a Windows Presentation Foundation (WPF) önálló és böngésző által üzemeltetett alkalmazások biztonsági modelljét ismerteti.

Ez a témakör a következő szakaszokat tartalmazza:

Biztonságos navigáció

Az XBAP-k esetében a WPF kétféle navigációs típust különböztet meg: az alkalmazást és a böngészőt.

alkalmazásnavigációs egy böngésző által üzemeltetett alkalmazás tartalomelemei közötti navigálás. Böngésző navigáció az a navigáció, amely a böngésző saját tartalmát és helyének URL-címét módosítja. Az alkalmazásnavigáció (általában XAML) és a böngészőnavigáció (általában HTML) közötti kapcsolat az alábbi ábrán látható:

Kapcsolat az alkalmazásnavigáció és a böngészőnavigáció között.

Az XBAP számára biztonságosnak ítélt tartalomtípust elsősorban az határozza meg, hogy az alkalmazásnavigáció vagy a böngészőnavigáció van-e használatban.

Alkalmazásnavigációs biztonság

Az alkalmazásnavigáció akkor tekinthető biztonságosnak, ha egy csomag URI-jával azonosítható, amely négy tartalomtípust támogat:

Tartalomtípus Leírás Példa URI-ra
Erőforrás A projekthez erőforrás-típusú buildként hozzáadott fájlok. pack://application:,,,/MyResourceFile.xaml
Tartalom A projekthez hozzáadott fájlok Tartalombuild típusával. pack://application:,,,/MyContentFile.xaml
Származási hely A projekthez hozzáadott fájlok olyan buildtípussal rendelkeznek, amely Nincs. pack://siteoforigin:,,,/MySiteOfOriginFile.xaml
Alkalmazáskód Olyan XAML-erőforrások, amelyek mögött lefordított kód áll.

-vagy-

A projekthez hozzáadott XAML-fájlok, amelyek Pagebuildtípusúak.
pack://application:,,,/MyResourceFile .xaml

Megjegyzés:

További információ az alkalmazásadatfájlokról és a csomag URI-jairól: WPF-alkalmazáserőforrás, -tartalom és adatfájlok.

Az ilyen tartalomtípusok fájljaira a felhasználó vagy programozott módon navigálhat:

  • Felhasználói navigáció. A felhasználó egy Hyperlink elemre kattintva navigál.

  • programozott navigáció. Az alkalmazás a felhasználó bevonása nélkül navigál, például a NavigationWindow.Source tulajdonság beállításával.

Böngésző navigációs biztonsága

A böngésző navigációja csak a következő feltételek mellett tekinthető biztonságosnak:

  • Felhasználói navigáció. A felhasználó úgy navigál, hogy rákattint egy Hyperlink elemre, amely a fő NavigationWindow-en belül van, nem egy beágyazott Frame-ben.

  • zóna. A navigálás alatt álló tartalom az interneten vagy a helyi intraneten található.

  • Protokoll. A használt protokoll vagy http, https, file, vagy mailto.

Ha egy XBAP olyan módon próbál meg navigálni a tartalomra, amely nem felel meg ezeknek a feltételeknek, a rendszer SecurityException dob.

Webböngészési szoftver biztonsági beállításai

A számítógép biztonsági beállításai határozzák meg, hogy a webböngésző szoftverek milyen hozzáférést kapnak. A webböngésző szoftver minden olyan alkalmazást vagy összetevőt tartalmaz, amely a WinINet vagy UrlMon API-kat használ, beleértve az Internet Explorert és a PresentationHost.exe.

Az Internet Explorer olyan mechanizmust biztosít, amellyel konfigurálhatja az Internet Explorer által vagy az Internet Explorerből végrehajtható funkciókat, beleértve a következőket:

  • .NET Framework-reliant összetevők

  • ActiveX-vezérlők és beépülő modulok

  • Letöltések

  • Szkriptelés

  • Felhasználói hitelesítés

Az ily módon biztonságosan biztosítható funkciók gyűjteménye zónánként van konfigurálva az internetes, intranetes, megbízható helyekés korlátozott helyek zónákhoz. Az alábbi lépések a biztonsági beállítások konfigurálását ismertetik:

  1. Nyissa meg Vezérlőpult.

  2. Kattintson Hálózati és internetes, majd az Internetbeállításokelemre.

    Megjelenik az Internetbeállítások párbeszédpanel.

  3. A Biztonsági lapon válassza ki azt a zónát, amelynél konfigurálja a biztonsági beállításokat.

  4. Kattintson az Egyéni szint gombra.

    Megjelenik a Biztonsági beállítások párbeszédpanel, és konfigurálhatja a kijelölt zóna biztonsági beállításait.

    Biztonsági beállítások párbeszédpanelt ábrázoló képernyőkép.

Megjegyzés:

Az Internet Explorerből is elérheti az Internetbeállítások párbeszédpanelt. Kattintson az Eszközök, majd az Internetbeállításokelemre.

A Windows Internet Explorer 7-től kezdődően a következő biztonsági beállítások jelennek meg kifejezetten a .NET-keretrendszerhez:

  • Laza XAML. Meghatározza, hogy az Internet Explorer képes-e XAML-fájlokra navigálni és nem biztonságos XAML-fájlokat megnyitni. (Engedélyezés, letiltás és parancssori beállítások).

  • XAML böngészőalkalmazások. Azt szabályozza, hogy az Internet Explorer képes-e az XBAP-kre navigálni és futtatni. (Engedélyezés, letiltás és parancssori beállítások).

Alapértelmezés szerint ezek a beállítások engedélyezve vannak az internetes, helyi intranetesés megbízható helyek zónákhoz, és le vannak tiltva a korlátozott helyek zónában.

Az internetbeállításokon keresztül elérhető biztonsági beállítások mellett a következő beállításjegyzék-értékek érhetők el számos biztonsági szempontból érzékeny WPF-funkció szelektív blokkolásához. Az értékek a következő kulcs alatt vannak definiálva:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Windows Presentation Foundation\Features

Az alábbi táblázat a beállítható értékeket sorolja fel.

Érték neve Érték típusa Értékadatok
XBAP letiltása REG_DWORD 1 a tiltáshoz; 0 az engedélyezéshez.
LooseXamlDisallow REG_DWORD 1 a tiltáshoz; 0 az engedélyezéshez.
Böngésző letiltása REG_DWORD 1 a tiltáshoz; 0 az engedélyezéshez.
MediaAudioDisallow REG_DWORD 1 a tiltáshoz; 0 az engedélyezéshez.
MediaKépTiltás REG_DWORD 1 a tiltáshoz; 0 az engedélyezéshez.
MédiaVideóTiltás REG_DWORD 1 a tiltáshoz; 0 az engedélyezéshez.
ScriptInteropDisallow REG_DWORD 1 a tiltáshoz; 0 az engedélyezéshez.

WebBrowser vezérlő és funkcióvezérlők

A WPF WebBrowser vezérlő használható webes tartalmak tárolására. A WPF WebBrowser vezérlő becsomagolja a mögöttes WebBrowser ActiveX-vezérlőt. A WPF támogatást nyújt az alkalmazás biztonságossá tételéhez, amikor a WPF WebBrowser vezérlőt használja a nem megbízható webes tartalmak üzemeltetéséhez. Egyes biztonsági funkciókat azonban közvetlenül az alkalmazásoknak kell alkalmazniuk a WebBrowser vezérlő használatával. További információ a WebBrowser ActiveX-vezérlőről: WebBrowser vezérlő áttekintése és oktatóanyagai.

Megjegyzés:

Ez a szakasz a Frame vezérlőre is vonatkozik, mivel használja a WebBrowser-et a HTML-tartalomhoz való navigálásra.

Ha a WPF WebBrowser vezérlőelem nem megbízható webes tartalmak tárolására szolgál, az alkalmazásnak részleges megbízhatósági AppDomain kell használnia, hogy az alkalmazás kódját elszigetelje a potenciálisan rosszindulatú HTML-szkriptkódtól. Ez különösen akkor igaz, ha az alkalmazás a InvokeScript metódussal és a ObjectForScripting tulajdonsággal kommunikál az üzemeltetett szkripttel. További információ: WPF Add-Ins Áttekintés.

Ha az alkalmazás a WPF WebBrowser vezérlőt használja, a biztonság növelésének és a támadások mérséklésének másik módja az Internet Explorer funkcióvezérlőinek engedélyezése. A funkcióvezérlők olyan kiegészítések az Internet Explorerhez, amelyek lehetővé teszik a rendszergazdáknak és fejlesztőknek, hogy konfigurálják az Internet Explorer és a WebBrowser ActiveX vezérlőt futtató alkalmazások funkcióit, amelyeket a WPF WebBrowser vezérlő körbefut. A funkcióvezérlők a CoInternetSetFeatureEnabled függvénnyel vagy a beállításjegyzékben lévő értékek módosításával konfigurálhatók. A funkcióvezérlőkről további információt A funkcióvezérlők és internetfunkció-vezérlőkcímű témakörben talál.

Ha önálló WPF-alkalmazást fejleszt, amely a WPF WebBrowser vezérlőt használja, a WPF automatikusan engedélyezi az alkalmazás következő funkcióvezérlőinek használatát.

Funkcióvezérlő
FUNKCIÓ_MIME_KEZELÉS
MIME_típus_szagolás (FEATURE_MIME_SNIFFING)
FUNKCIÓ_OBJEKTUM_TÁRHELYEZÉS
FEATURE_SAFE_BINDTOOBJECT
JELLEMZŐ_ABLAK_KORLÁTOZÁSOK
JELLEMZŐ_ZÓNA_MAGASSÁG
FUNKCIÓ_KORLÁTOZÁS_FÁJLLEHÚZÁS
FEATURE_RESTRICT_ACTIVEXINSTALL
FUNKCIÓ_BŐVÍTMÉNY_KEZELÉS
FÜGGVÉNY_HTTP_FELHASZNÁLÓNÉV_JELSZÓ_LETILTÁS
BIZTONSÁGI SÁV FUNKCIÓ
FEATURE_UNC_SAVEDFILECHECK
FUNKCIÓ_NAVIGÁCIÓ_URL_ELLENŐRZÉS
A TELNET protokoll letiltásának funkciója
WEBÜZENET_POPUPKEZELÉS_JELLEMZŐ
FUNKCIÓ_KAPCSOLD_KI_A_HAGYOMÁNYOS_TÖMÖRÍTÉST
FEATURE_SSLUX

Mivel ezek a funkcióvezérlők feltétel nélkül engedélyezve vannak, a teljes megbízhatóságú alkalmazásokat ronthatják. Ebben az esetben, ha nincs biztonsági kockázat az adott alkalmazásra és az általa üzemeltetett tartalomra vonatkozóan, a megfelelő funkcióvezérlő le lehet tiltani.

A funkcióvezérlőket a WebBrowser ActiveX objektumot példányosító folyamat alkalmazza. Ezért ha önálló alkalmazást hoz létre, amely nem megbízható tartalmakra tud navigálni, komolyan fontolóra kell vennie további funkcióvezérlők engedélyezését.

Megjegyzés:

Ez az ajánlás az MSHTML és az SHDOCVW gazdagép biztonságára vonatkozó általános ajánlásokon alapul. További információ: Az MSHTML gazdagép biztonsága – GYIK: I. rész és Az MSHTML gazdagép biztonsága – GYIK: II. rész.

A végrehajtható fájl esetében fontolja meg a következő funkcióvezérlők engedélyezését a beállításjegyzék értékének 1 értékre állításával.

Funkcióvezérlő
FEATURE_ACTIVEX_HASZNOSÍTÁSFELISMERÉS
FEATURE_BLOCK_LMZ_IMG
FEATURE_BLOCK_LMZ_OBJECT
FEATURE_BLOCK_LMZ_SCRIPT
FEATURE_RESTRICT_RES_TO_LMZ
FEATURE_RESTRICT_ABOUT_PROTOCOL_IE7
FUNKCIÓ_APP_PROTOKOLL_FIGYELMEZTETŐ_PÁRBESZÉDABLAK_MEGAJELENÍTÉSE
FEATURE_LOCALMACHINE_LOCKDOWN (HelyiGépZárolás)
JELLEMZŐ_KÉNYSZER_CÍM_ÉS_ÁLLAPOT
JELLEMZŐ_KORLÁTOZOTT_ZÓNA_AMA_JELENSÉG_ESHETÉLÉBÉN_HOGY_A_FÁJL_NEM_TALÁLHATÓ

A végrehajtható fájl esetében fontolja meg a következő funkcióvezérlés letiltását a beállításjegyzék értékének 0 értékre állításával.

Funkcióvezérlő
FUNKCIÓ_SCRIPT_BEILLESZTÉS_URL_MŰVELET_HA_FIGYELMEZTETÉS

Ha egy részleges megbízhatóságú XAML böngészőalkalmazást (XBAP) futtat, amely egy WPF WebBrowser vezérlőt tartalmaz a Windows Internet Explorerben, a WPF a WebBrowser ActiveX vezérlőt üzemelteti az Internet Explorer folyamat címterében. Mivel a WebBrowser ActiveX-vezérlőt az Internet Explorer folyamat üzemelteti, az Internet Explorer összes funkcióvezérlője a WebBrowser ActiveX-vezérlőhöz is engedélyezve van.

Az Internet Explorerben futó XBAP-k a normál különálló alkalmazásokhoz képest további biztonsági szintet is kapnak. Ennek a további biztonságnak az az oka, hogy az Internet Explorer, és ezért a WebBrowser ActiveX vezérlő alapértelmezés szerint védett módban fut Windows Vista és Windows 7 rendszeren. További információ a védett módról: Az Internet Explorerismertetése és használata védett módban.

Megjegyzés:

Ha olyan XBAP-t próbál futtatni, amely tartalmaz egy WPF WebBrowser vezérlőt a Firefoxban, míg az internetzónában egy SecurityException fog dobni. Ez a WPF biztonsági szabályzatának köszönhető.

APTCA-szerelvények letiltása részben megbízható ügyfélalkalmazások számára

Ha a felügyelt szerelvényeket a globális szerelvény-gyorsítótárba (GAC) telepítik, azok teljes mértékben megbízhatóvá válnak, mert a felhasználónak explicit engedélyt kell adnia a telepítésükre. Mivel teljes mértékben megbízhatóak, csak a teljes mértékben megbízható felügyelt ügyfélalkalmazások használhatják őket. A részben megbízható alkalmazások használatának engedélyezéséhez meg kell jelölni őket a AllowPartiallyTrustedCallersAttribute (APTCA) címkével. Ezzel az attribútummal csak azokat a szerelvényeket kell megjelölni, amelyeknél a részleges megbízhatósági állapotban végzett végrehajtás biztonságosnak lett tesztelve.

Az APTCA-szerelvény azonban biztonsági hibát mutathat a GAC-ba való telepítés után. A biztonsági hiba felfedezése után a szerelvény-közzétevők biztonsági frissítést készíthetnek a meglévő telepítésekkel kapcsolatos probléma megoldásához, valamint a probléma felderítése után esetlegesen előforduló telepítésekkel szembeni védelemhez. A frissítés egyik lehetősége a szerelvény eltávolítása, bár ez megszakíthatja a szerelvényt használó többi teljesen megbízható ügyfélalkalmazást.

A WPF olyan mechanizmust biztosít, amellyel az APTCA-szerelvény az APTCA-szerelvény eltávolítása nélkül letiltható a részben megbízható XBAP-k esetében.

Az APTCA-szerelvény letiltásához létre kell hoznia egy speciális beállításkulcsot:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\policy\APTCA\<AssemblyFullName>, FileVersion=<AssemblyFileVersion>

Az alábbiakban egy példa látható:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\policy\APTCA\aptcagac, Version=1.0.0.0, Culture=neutral, PublicKeyToken=215e3ac809a0fea7, FileVersion=1.0.0.0

Ez a kulcs létrehoz egy bejegyzést az APTCA-szerelvényhez. Ebben a kulcsban olyan értéket is létre kell hoznia, amely engedélyezi vagy letiltja a szerelvényt. Az érték részletei a következők:

  • Érték neve: APTCA_FLAG.

  • Értéktípus: REG_DWORD.

  • Értékadatok: 1 a letiltáshoz; 0 az engedélyezéshez.

Ha egy szerelvényt le kell tiltani a részben megbízható ügyfélalkalmazások esetében, írhat egy frissítést, amely létrehozza a beállításkulcsot és az értéket.

Megjegyzés:

Az alapvető .NET-keretrendszer-szerelvényeket nem érinti a letiltásuk, mert a felügyelt alkalmazások futtatásához szükségesek. Az APTCA-szerelvények letiltását elsősorban külső alkalmazások támogatják.

Tesztkörnyezet viselkedése laza XAML-fájlok esetén

A laza XAML-fájlok olyan csak jelöléses XAML-fájlok, amelyek nem függnek a kód mögötti fájltól, az eseménykezelőtől vagy az alkalmazásspecifikus assemblytől. Amikor az önálló XAML-fájlokat közvetlenül a böngészőből nyitják meg, a rendszer az alapértelmezett internetes zóna engedélyei alapján egy biztonsági tesztkörnyezetbe tölti be őket.

A biztonsági viselkedés azonban eltér, amikor laza XAML-fájlokat különálló alkalmazáson belüli NavigationWindow vagy Frame navigálás útján érnek el.

Mindkét esetben a laza XAML-fájl, amelyhez navigálunk, a gazdaalkalmazás engedélyeit örökli. Ez a viselkedés azonban biztonsági szempontból nemkívánatos lehet, különösen akkor, ha egy laza XAML-fájlt olyan entitás hozott létre, amely nem megbízható vagy ismeretlen. Ez a tartalomtípus külső tartalomnéven ismert, és a Frame és a NavigationWindow is konfigurálható úgy, hogy elkülönítse azt a navigáláskor. Az elkülönítés a SandboxExternalContent tulajdonság igaz értékre állításával érhető el, ahogy az Frame és NavigationWindowalábbi példáiban is látható:

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

Ezzel a beállítással a külső tartalom egy olyan folyamatba lesz betöltve, amely eltér az alkalmazást üzemeltető folyamattól. Ez a folyamat az alapértelmezett internetzóna-engedélykészletre korlátozódik, és gyakorlatilag el van különítve az üzemeltetési alkalmazástól és az ügyfélszámítógéptől.

Megjegyzés:

Annak ellenére, hogy az önálló alkalmazásokban lévő NavigationWindow vagy Frame laza XAML-fájlokra való navigálás a WPF böngésző üzemeltetési infrastruktúráján alapul, beleértve a PresentationHost folyamatot is, a biztonsági szint valamivel kisebb, mint amikor a tartalmat közvetlenül az Internet Explorerbe töltik be Windows Vista és Windows 7 rendszeren (ami még mindig a PresentationHoston keresztül történik). Ennek az az oka, hogy egy webböngészőt használó különálló WPF-alkalmazás nem biztosítja az Internet Explorer további védett módú biztonsági funkcióját.

A biztonságot elősegítő WPF-alkalmazások fejlesztéséhez szükséges erőforrások

Az alábbiakban további forrásokat találhat a biztonságot támogató WPF-alkalmazások fejlesztéséhez:

Terület Erőforrás
Felügyelt kód minták és eljárások – Biztonsági útmutató alkalmazásokhoz
CAS Kódhozzáférési biztonság
ClickOnce ClickOnce biztonság és telepítés
WPF (Windows Presentation Foundation) WPF részleges megbízhatósági biztonság

Lásd még