Güvenlik (WPF)
Tek başına Windows Presentation Foundation (WPF) ve tarayıcı tarafından barındırılan uygulamalar geliştirmek için güvenlik modelini göz önünde bulundurabilirsiniz. WPF tek başına uygulamaları, Windows Yükleyicisi (.msi), XCopy veya ClickOnce kullanılarak dağıtıldığında sınırsız izinlerle (CAS FullTrust izin kümesi) yürütülür. Sanal ağ ile kısmi güven, tek başına WPF uygulamaları ClickOnce desteklenmez. Ancak, tam güvene sahip bir konak uygulaması, eklenti modelini AppDomain kullanarak .NET Framework güven oluşturabilir. Daha fazla bilgi için bkz. WPF Add-Ins Genel Bakış.
WPF tarayıcı tarafından barındırılan uygulamalar Windows Internet Explorer veya Firefox tarafından barındırıldı ve XAML tarayıcı uygulamaları (XBAP'ler) veya gevşek belgeler olabilir Daha fazla bilgi için Extensible Application Markup Language (XAML) bkz. WPF XAML TarayıcıUygulamalarına Genel Bakış.
WPF tarayıcıda barındırılan uygulamalar, varsayılan olarak varsayılan CAS İnternet bölgesi izin kümesiyle sınırlı olan kısmi bir güven güvenliği korumalı alanı içinde yürütülür. Bu, WPF tarayıcıda barındırılan uygulamaları, tipik Web uygulamalarının yalıtılmış olmasını beklediğiniz şekilde istemci bilgisayardan etkin bir şekilde yalıtır. XBAP, dağıtım URL'sinin güvenlik bölgesine ve istemcinin güvenlik yapılandırmasına bağlı olarak ayrıcalıkları Tam Güven'e yükseltebilir. Daha fazla bilgi için bkz. WPF Kısmi Güven Güvenliği.
Bu konu, tek başına (WPF) Windows Presentation Foundation tarayıcıda barındırılan uygulamalar için güvenlik modelini ele amektedir.
Bu konu aşağıdaki bölümleri içermektedir:
Kasa Gezinti
WPF, XBAP'ler için iki gezinti türü ayırt edicidir: uygulama ve tarayıcı.
Uygulama gezintisi, tarayıcı tarafından barındırılan bir uygulama içindeki içerik öğeleri arasında gezinmedir. Tarayıcı gezintisi, tarayıcının içeriğini ve konum URL'sini değiştirir. Uygulama gezintisi (genellikle XAML) ile tarayıcı gezintisi (genellikle HTML) arasındaki ilişki aşağıdaki çizimde gösterilmiştir:

XBAP'nin gidi için güvenli olarak kabul edilen içerik türü öncelikli olarak uygulama gezintisi mi yoksa tarayıcı gezintisi mi kullanılır? tarafından belirlenir.
Uygulama Gezinti Güvenliği
Dört tür içeriği destekleyen bir paket URI'sı ile tanımlansa uygulama gezintisi güvenli kabul edilir:
| İçerik Türü | Description | URI Örneği |
|---|---|---|
| Kaynak | Derleme türü Kaynak olan bir projeye eklenen dosyalar. | pack://application:,,,/MyResourceFile.xaml |
| Content | Derleme türü İçerik olan bir projeye eklenen dosyalar. | pack://application:,,,/MyContentFile.xaml |
| Kaynak site | Derleme türü Yok olan bir projeye eklenen dosyalar. | pack://siteoforigin:,,,/MySiteOfOriginFile.xaml |
| Uygulama kodu | Derlenmiş bir arka koda sahip XAML kaynakları. -veya- Derleme türü Sayfa olan bir projeye eklenen XAML dosyaları. |
pack://application:,,,/MyResourceFile .xaml |
Not
Uygulama veri dosyaları ve paket URL'leri hakkında daha fazla bilgi için bkz. WPF Uygulama Kaynağı, İçerik ve Veri Dosyaları.
Bu içerik türlerinin dosyalarına kullanıcı tarafından veya program aracılığıyla gidebilirsiniz:
Kullanıcı Gezintisi. Kullanıcı bir öğeye tıklayarak Hyperlink geziner.
Programlı Gezinti. Uygulama, örneğin özelliğini ayarerek kullanıcıyla ilgili olmadan NavigationWindow.Source gezinebilir.
Tarayıcı Gezinti Güvenliği
Tarayıcı gezintisi yalnızca aşağıdaki koşullarda güvenli olarak kabul edilir:
Kullanıcı Gezintisi. Kullanıcı, iç içe geçmiş içinde değil, ana öğe Hyperlink içinde yer alan bir NavigationWindow öğeye tıklayarak Frame geziner.
Bölge. Gidilen içerik İnternet'te veya yerel intranette bulunur.
Protokolü . Kullanılan protokol http, https, dosya veya mailto'dır.
XBAP, içeriğe bu koşullarla uyumlu olmayan bir şekilde gezinmeye SecurityException çalışırsa, bir olur.
Web'e Gözatma Yazılım Güvenliği Ayarlar
Bilgisayarınızda güvenlik ayarları, herhangi bir yazılıma Web'e gözatma belirler. Web'e gözatma, wininet veya UrlMon API'lerini kullanan herhangi bir uygulama veya bileşen (Internet Explorer ve PresentationHost.exe.
Internet Explorer, aşağıdakiler de dahil olmak üzere Internet Explorer tarafından yürütülmelerine izin verilen işlevselliği yapılandırarak bir mekanizma sağlar:
.NET Framework bileşenleri
ActiveX denetimler ve eklentiler
İndirmeler
Betik Oluşturma
Kullanıcı Kimlik Doğrulaması
Bu şekilde güvenliği sağlanabilir işlevsellik koleksiyonu İnternet, Intranet, Güvenilen Siteler ve Kısıtlı Siteler bölgeleri için bölge başına temelinde yapılandırılır. Aşağıdaki adımlarda güvenlik ayarlarınızın nasıl yapılandırıldığından emin olun:
Denetim Masası.
Ağ ve İnternet'e ve ardından İnternet Seçenekleri'ne tıklayın.
İnternet Seçenekleri iletişim kutusu görüntülenir.
Güvenlik sekmesinde, güvenlik ayarlarını yapılandıracak bölgeyi seçin.
Özel Düzey düğmesine tıklayın.
Güvenlik Ayarlar iletişim kutusu görüntülenir ve seçilen bölge için güvenlik ayarlarını yapılandırabilirsiniz.

Not
Ayrıca, İnternet Seçenekleri iletişim kutusuna İnternet'Internet Explorer. Araçlar'a ve ardından İnternet Seçenekleri'ne tıklayın.
7 Windows Internet Explorer başlayarak, özel olarak aşağıdaki güvenlik ayarları .NET Framework dahil edilir:
Gevşek XAML. Dosyalarda Internet Explorer ve gevşek dosya olup olmadığını XAML kontrol eder. (Etkinleştir, Devre Dışı Bırak ve İstem seçenekleri).
XAML tarayıcı uygulamaları. XBAP'Internet Explorer gidip çalıştırılab olmadığını kontrol eder. (Etkinleştir, Devre Dışı Bırak ve İstem seçenekleri).
Varsayılan olarak, bu ayarların hepsi İnternet, Yerel intranet ve Güvenilen siteler bölgeleri için etkinleştirilir ve Kısıtlı siteler bölgesi için devre dışı bırakılır.
Güvenlikle ilgili WPF Kayıt Defteri Ayarlar
İnternet Seçenekleri aracılığıyla kullanılabilen güvenlik ayarlarına ek olarak, güvenlike duyarlı bir dizi WPF özelliğini seçmeli olarak engellemek için aşağıdaki kayıt defteri değerleri kullanılabilir. Değerler aşağıdaki anahtar altında tanımlanır:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Windows Presentation Foundation\Features
Aşağıdaki tabloda ayarlanacak değerler listelene bir liste yer alır.
| Değer Adı | Değer Türü | Değer Verileri |
|---|---|---|
| XBAPDisallow | REG_DWORD | 1 izinsizlik için; İzin vermek için 0. |
| LooseXamlDisallow | REG_DWORD | 1 izinsizlik için; İzin vermek için 0. |
| WebBrowserDisallow | REG_DWORD | 1-izin verme; izin verilecek 0. |
| Mediaaudioallow | REG_DWORD | 1-izin verme; izin verilecek 0. |
| Mediaımageallow | REG_DWORD | 1-izin verme; izin verilecek 0. |
| Mediavideoallow | REG_DWORD | 1-izin verme; izin verilecek 0. |
| ScriptInteropDisallow | REG_DWORD | 1-izin verme; izin verilecek 0. |
WebBrowser denetimi ve özellik denetimleri
WPF WebBrowser denetimi Web içeriğini barındırmak için kullanılabilir. WPF WebBrowser denetimi temel alınan WebBrowser ActiveX denetimini sarmalanmış. WPF, WebBrowser Güvenilmeyen Web içeriğini barındırmak IÇIN WPF denetimini kullandığınızda uygulamanızın güvenliğini sağlamaya yönelik bazı destek sağlar. Ancak bazı güvenlik özelliklerinin, denetimi kullanan uygulamalar tarafından doğrudan uygulanması gerekir WebBrowser . webbrowser ActiveX denetimi hakkında daha fazla bilgi için bkz. webbrowser denetimi genel bakış ve öğreticiler.
Not
Bu bölüm Frame , WebBrowser HTML içeriğine gitmek için öğesini kullandığından denetim için de geçerlidir.
WPF WebBrowser denetimi güvenilmeyen Web içeriğini barındırmak için kullanılıyorsa, uygulamanız AppDomain potansiyel olarak kötü amaçlı HTML betik kodundan uygulama kodunuzun korunmasını sağlamak için kısmi güven kullanmalıdır. Bu özellikle, uygulamanız barındırılan betiğe yöntemi ve özelliğini kullanarak etkileşimde bulunursa geçerlidir InvokeScript ObjectForScripting . Daha fazla bilgi için bkz. WPF Add-Ins genel bakış.
Uygulamanız WPF WebBrowser denetimini kullanıyorsa, güvenliği artırmanın ve saldırıları hafifletmek için başka bir yol, Internet Explorer Özellik denetimlerini etkinleştirmektir. özellik denetimleri, yöneticilerin ve geliştiricilerin ınternet explorer 'ın ve WPF denetiminin sarmaladığı WebBrowser ActiveX denetimini barındıran uygulamaların özelliklerini yapılandırmasına izin veren ınternet explorer 'ın eklemeleridir WebBrowser . Özellik denetimleri CoInternetSetFeatureEnabled işlevi kullanılarak veya kayıt defterindeki değerler değiştirilerek yapılandırılabilir. Özellik denetimleri hakkında daha fazla bilgi için bkz. özellik denetimlerine giriş ve Internet Özellik denetimleri.
WPF denetimini kullanan tek başına bir WPF uygulaması geliştiriyorsanız WebBrowser , WPF, uygulamanız için aşağıdaki özellik denetimlerini otomatik olarak etkinleştirilir.
| Özellik denetimi |
|---|
| 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 |
Bu özellik denetimleri koşullu olarak etkinleştirildiğinden, tam güven uygulaması onlar tarafından zayıflatılabilir. Bu durumda, belirli bir uygulama ve barındırdığı içerik için bir güvenlik riski yoksa, ilgili özellik denetimi devre dışı bırakılabilir.
özellik denetimleri, WebBrowser ActiveX nesnesini örnekleyerek işlem tarafından uygulanır. Bu nedenle, güvenilmeyen içeriğe gidebileceğiniz tek başına bir uygulama oluşturuyorsanız, ek özellik denetimlerini etkinleştirmeyi ciddi bir şekilde dikkate almanız gerekir.
Not
Bu öneri, MSHTML ve SHDOCVW ana bilgisayar güvenliği için genel önerilere dayanır. Daha fazla bilgi için bkz. MSHTML ana bilgisayar GÜVENLIK SSS: II 'Nin bölüm ve MSHTML ana bilgisayar GÜVENLIK SSS: II 'nin Bölüm II.
Yürütülebilir dosya için, kayıt defteri değerini 1 olarak ayarlayarak aşağıdaki özellik denetimlerini etkinleştirmeyi düşünün.
| Özellik denetimi |
|---|
| 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 |
Yürütülebilir dosya için, kayıt defteri değerini 0 olarak ayarlayarak aşağıdaki Özellik denetimini devre dışı bırakmayı göz önünde bulundurun.
| Özellik denetimi |
|---|
| FEATURE_ENABLE_SCRIPT_PASTE_URLACTION_IF_PROMPT |
Windows ınternet explorer 'da wpf denetimi içeren bir kısmi güven XAML tarayıcı uygulaması (XBAP) çalıştırırsanız WebBrowser , wpf, ınternet explorer işleminin adres alanındaki WebBrowser ActiveX denetimini barındırır. webbrowser ActiveX denetimi ınternet explorer işleminde barındırıldığından, ınternet explorer 'ın tüm özellik denetimleri de WebBrowser ActiveX denetimi için etkinleştirilmiştir.
Internet Explorer 'da çalışan XBAP 'ler, normal tek başına uygulamalara kıyasla ek bir güvenlik düzeyi de alır. bu ek güvenlik, ınternet Explorer ve bu nedenle WebBrowser ActiveX denetimi Windows Vista ve Windows 7 ' de varsayılan olarak korumalı modda çalışır. Korumalı mod hakkında daha fazla bilgi için bkz. korumalı modda anlama ve Internet Explorer 'Da çalışma.
Not
Firefox 'ta WPF denetimi içeren bir XBAP çalıştırmayı denerseniz WebBrowser , Internet bölgesinde bir SecurityException oluşturulur. Bunun nedeni WPF Güvenlik ilkesidir.
Kısmen güvenilen Istemci uygulamaları için APTCA derlemelerini devre dışı bırakma
Yönetilen derlemeler genel derleme önbelleği 'ne (GAC) yüklendiğinde, kullanıcının bunları yüklemek için açık izin sağlaması gerektiğinden, bunlar tamamen güvenilir hale gelir. Tam güvenilir oldukları için, yalnızca tam olarak güvenilen yönetilen istemci uygulamaları kullanabilir. Kısmen güvenilen uygulamaların bunları kullanmasına izin vermek için, AllowPartiallyTrustedCallersAttribute (aptca) ile işaretlenmeleri gerekir. Yalnızca kısmi güvende yürütme için güvenli olarak test edilmiş derlemeler Bu öznitelikle işaretlenmelidir.
Ancak, bir APTCA derlemesinin GAC 'ye yüklendikten sonra bir güvenlik kusuru göstermesi mümkündür. Bir güvenlik kusurunu bulduktan sonra, derleme yayımcıları mevcut kurulumlarda sorunu gidermek ve sorun keşfedildiğinde oluşabilecek yüklemelere karşı korumak için bir güvenlik güncelleştirmesi oluşturabilir. Güncelleştirme için bir seçenek derlemeyi kaldırmakla birlikte, derlemeyi kullanan diğer tam güvenilir istemci uygulamaları da kesintiye uğramayabilir.
WPF, APTCA derlemesini kaldırmadan kısmen güvenilen XBAP 'ler için bir APTCA derlemesinin devre dışı bırakılabileceği bir mekanizma sağlar.
Bir APTCA derlemesini devre dışı bırakmak için özel bir kayıt defteri anahtarı oluşturmanız gerekir:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\policy\APTCA\<AssemblyFullName>, FileVersion=<AssemblyFileVersion>
Aşağıda bir örnek gösterilmektedir:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\policy\APTCA\aptcagac, Version=1.0.0.0, Culture=neutral, PublicKeyToken=215e3ac809a0fea7, FileVersion=1.0.0.0
Bu anahtar, APTCA derlemesi için bir giriş oluşturur. Ayrıca, bu anahtarda derlemeyi sağlayan veya devre dışı bırakan bir değer oluşturmanız gerekir. Aşağıda değerin ayrıntıları verilmiştir:
Değer adı: APTCA_FLAG.
Değer türü: REG_DWORD.
Değer verisi: devre dışı bırakmak için 1 ; etkinleştirmek için 0 .
Kısmen güvenilen istemci uygulamaları için bir derlemenin devre dışı bırakılması gerekiyorsa, kayıt defteri anahtarını ve değerini oluşturan bir güncelleştirme yazabilirsiniz.
Not
temel .NET Framework derlemeleri, yönetilen uygulamaların çalışması için gerekli olduklarından, bu şekilde devre dışı bırakılarak etkilenmez. APTCA derlemelerini devre dışı bırakma desteği öncelikle üçüncü taraf uygulamalara yöneliktir.
Gevşek XAML dosyaları için korumalı alan davranışı
Gevşek XAML dosyalar, herhangi bir kod, olay işleyicisine veya uygulamaya özgü derlemeye bağlı olmayan yalnızca BIÇIMLENDIRME xaml dosyalarıdır. Gevşek XAML Dosyalar doğrudan tarayıcıdan gezindiği zaman, varsayılan Internet bölgesi izin kümesine göre bir güvenlik korumalı alana yüklenir.
Ancak, gevşek XAML dosyalar NavigationWindow tek başına bir uygulamadaki veya arasında gezilebilir olduğunda güvenlik davranışı farklıdır Frame .
Her iki durumda da XAML gezinmiş olan gevşek dosya, ana bilgisayar uygulamasının izinlerini devralır. Ancak, özellikle de XAML güvenilir olmayan veya bilinmeyen bir varlık tarafından gevşek bir dosya üretilirse, bu davranış bir güvenlik perspektifinden istenmeyen bir durum olabilir. Bu tür içerikler dış içerik olarak bilinir ve hem de , 'a gidilen zaman Frame NavigationWindow yalıtmak üzere yalıtmak üzere yalıtabilirsiniz. Yalıtım, ve için aşağıdaki örneklerde gösterildiği gibi SandboxExternalContent özelliğini true olarak ayararak Frame NavigationWindow sağlanır:
<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>
Bu ayar ile dış içerik, uygulamayı barındıran işlemden ayrı bir işleme yüklenir. Bu işlem, varsayılan İnternet bölgesi izin kümesiyle kısıtlanır ve bunu barındırma uygulamasından ve istemci bilgisayardan etkili bir şekilde yalıtır.
Not
Tek başına bir uygulamanın veya bağımsız uygulamasındaki gevşek dosyalara gezinti, PresentationHost işlemini içeren WPF tarayıcı barındırma altyapısına göre uygulansa da, güvenlik düzeyi içeriğin Windows Vista ve XAML NavigationWindow Windows 7'de (yine PresentationHost aracılığıyla olacaktır) Internet Explorer'de doğrudan Internet Explorer'ye yüklendiğinden biraz daha Frame azdır. Bunun nedeni, Web tarayıcısı kullanan tek başına BIR WPF uygulamasının web tarayıcısının ek Korumalı Mod güvenlik özelliğini Internet Explorer.
Güvenliği Yükselten WPF Uygulamaları Geliştirme Kaynakları
Güvenliği yükselten WPF uygulamaları geliştirmeye yardımcı olacak bazı ek kaynaklar aşağıda vemektedir:
| Alan | Kaynak |
|---|---|
| Yönetilen kod | Uygulamalar için Desenler ve Uygulamalar Güvenlik Kılavuzu |
| CAS | Kod Erişimi Güvenliği |
| ClickOnce | ClickOnce Güvenlik ve Dağıtım |
| WPF | WPF Kısmi Güven Güvenliği |