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 (CASFullTrust 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 Extensible Application Markup Language (XAML) belgeleri olabilir Daha fazla bilgi için 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 veya tarayıcı gezintisi kullanıp kullanmama 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ü | Açıklama | 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,dosyaveyamailto'dır.
Bir 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 da buradan 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. XAML dosyalarına Internet Explorer ve gevşek XAML dosyalarına gidip gidileyrilip gidileyil Internet Explorer olmadığını kontrol eder. (Etkinleştir, Devre Dışı Bırak ve İstem seçenekleri).
XAML tarayıcı uygulamaları. XBAP'Internet Explorer ve çalıştırıp çalıştıramaylarını kontrol eder. (Etkinleştir, Devre Dışı Bırak ve İstem seçenekleri).
Varsayılan olarak, bu ayarların hepsi İnternet,Yerel intranetve 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 izinsizlik için; İzin vermek için 0. |
| MediaAudioDisallow | REG_DWORD | 1 izinsizlik için; İzin vermek için 0. |
| MediaImageDisallow | REG_DWORD | 1 izinsizlik için; İzin vermek için 0. |
| MediaVideoDisallow | REG_DWORD | 1 izinsizlik için; İzin vermek için 0. |
| ScriptInteropDisallow | REG_DWORD | 1 izinsizlik için; İzin vermek için 0. |
WebBrowser Denetimi ve Özellik Denetimleri
WPF WebBrowser denetimi Web içeriğini barındırmak için kullanılabilir. WPF WebBrowser denetimi, temel WebBrowser'ı ActiveX sarmalar. WPF, güvenilmeyen Web içeriğini barındırmak için WPF denetimi WebBrowser kullanarak uygulamanın güvenliğini sağlamak için bazı destek sağlar. Ancak, bazı güvenlik özelliklerinin denetim kullanılarak doğrudan uygulamalar tarafından uygulanması WebBrowser gerekir. WebBrowser denetim hakkında daha fazla ActiveX için bkz. WebBrowser Denetimine Genel Bakış ve Öğreticiler.
Not
Bu bölüm, Frame HTML içeriğine gitmek için WebBrowser kullandığından denetimi için de geçerlidir.
WPF denetimi güvenilmeyen Web içeriğini barındırmak için kullanılıyorsa, uygulama kodunuzu kötü amaçlı olabilecek HTML betik kodundan korumanıza yardımcı olması için uygulamanıza kısmi güven WebBrowserAppDomain kullanılmalıdır. Bu, özellikle de, uygulamanız yöntemi ve özelliğini kullanarak barındırılan betikle InvokeScript etkileşimde bulunıyorsa ObjectForScripting doğrudur. Daha fazla bilgi için bkz. WPF Add-Ins Genel Bakış.
Uygulamanız WPF denetimi kullanıyorsa, güvenliği artırmanın ve saldırıları azaltmak için başka bir yol da WebBrowser wpf Internet Explorer etkinleştirmektir. Özellik denetimleri, yöneticilerin Internet Explorer geliştiricilerin WPF denetiminde sarmalanacak WebBrowser ActiveX denetimlerini barındıran Internet Explorer uygulamalarının özelliklerini yapılandırmasına olanak sağlayan ek WebBrowser özelliklerdir. Özellik denetimleri CoInternetSetFeatureEnabled işlevi kullanılarak veya kayıt defterindeki değerler değiştirerek yalıtılabilir. Özellik denetimleri hakkında daha fazla bilgi için bkz. Özellik Denetimlerine Giriş veİnternet Özellik Denetimleri.
WPF denetimi kullanan tek başına bir WPF uygulaması geliştiriyorsanız, WPF otomatik olarak WebBrowser aşağıdaki özellik denetimlerini uygulamanıza sağlar.
| Ö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şulsuz olarak etkinleştirildiğinden, tam güven uygulaması bu denetimlerden olumsuz olabilir. Bu durumda, belirli bir uygulama ve barındırılacak içerik için güvenlik riski yoksa, ilgili özellik denetimi devre dışı bırakılabilir.
Özellik denetimleri WebBrowser örneği oluşturma işlemi tarafından ActiveX uygulanır. Bu nedenle, güvenilmeyen içeriğe gidilen tek başına bir uygulama oluşturuyorsanız, ek özellik denetimlerini etkinleştirmeyi gerçekten göz önünde bulundurabilirsiniz.
Not
Bu öneri MSHTML ve SHDOCVW konak güvenliği için genel önerileri temel almaktadır. Daha fazla bilgi için bkz. MSHTML Konak Güvenliği hakkında SSS: BÖLÜM I ve MSHTML Konak Güvenliği SSS: IIBölüm II .
Yürütülebilir dosyanız için kayıt defteri değerini 1 olarak ayarerek aşağıdaki özellik denetimlerini etkinleştirmeyi göz önünde bulundurabilirsiniz.
| Ö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 dosyanız için kayıt defteri değerini 0 olarak ayarerek aşağıdaki özellik denetimi devre dışı bırakmayı göz önünde bulundurabilirsiniz.
| Özellik Denetimi |
|---|
| FEATURE_ENABLE_SCRIPT_PASTE_URLACTION_IF_PROMPT |
Windows Internet Explorer'de WPF denetimi içeren bir kısmi güven XAML tarayıcı uygulaması (XBAP) çalıştırıyorsanız, WebBrowser WPF WebBrowser ActiveX denetimi, Internet Explorer işleminin adres Internet Explorer barındırıyor. WebBrowser ActiveX denetimi Internet Explorer işlemde barındırıldık, Internet Explorer için tüm özellik denetimleri WebBrowser ActiveX için etkinleştirilir.
Internet Explorer çalışan XBAP'ler de normal tek başına uygulamalara kıyasla ek bir güvenlik düzeyi elde ediyor. Bu ek güvenlik, Internet Explorer ve bu nedenle WebBrowser ActiveX denetimi, Windows Vista ve Windows 7'de korumalı modda çalışır. Korumalı mod hakkında daha fazla bilgi için bkz. Korumalı Modda Anlama ve Çalışma Internet Explorer.
Not
Firefox'ta WPF denetimi içeren bir XBAP çalıştırmaya çalışırsanız, WebBrowser İnternet bölgesinde ise bir SecurityException atılan olur. Bunun nedeni WPF güvenlik ilkesidir.
Kısmen Güvenilen İstemci Uygulamaları için APTCA Derlemelerini Devre Dışı Bırakma
Yönetilen derlemeler genel derleme önbelleğine (GAC) yüklenirken, kullanıcı bunları yüklemek için açık izin sağlamış olması gerekir, çünkü bunlar tam olarak güvenilir olur. Tam olarak güvenilir olduğundan, bunları 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şaretlenir. Yalnızca kısmi güvende yürütme için güvenli olduğu test edilmiş derlemeler bu öznitelikle işaretlenir.
Ancak, bir APTCA derlemesi GAC'ye yüklendikten sonra bir güvenlik açıkı sergiler. Bir güvenlik açıkı keşfedildikten sonra, derleme yayımcıları mevcut yüklemelerde sorunu düzeltmek ve sorun bulunduktan sonra ortaya çıkabilir yüklemelere karşı koruma için bir güvenlik güncelleştirmesi oluşturabilir. Güncelleştirme için bir seçenek, derlemeyi kullanan diğer tam olarak güvenilen istemci uygulamalarını bozacak olsa da derlemeyi kaldırmaktır.
WPF, APTCA derlemesi kaldırılmadan kısmen güvenilen XBAP'ler için bir APTCA derlemesi devre dışı bırakılabilir bir mekanizma sağlar.
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 ve bir örnek ve ardından ve bir örnek ve ardından aşağıdakiler ve daha sonra bir örnek
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ş sağlar. Ayrıca bu anahtarda derlemeyi etkinleştiren veya devre dışı bırakan bir değer oluşturmanız gerekir. Aşağıdakiler değerin ayrıntılarıdır:
Değer Adı: APTCA_FLAG.
Değer Türü: REG_DWORD.
Değer Verileri: Devre dışı bırakmak için 1;etkinleştirmek için 0.
Bir derlemenin kısmen güvenilen istemci uygulamaları için devre dışı olması gerekirse, 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 olduğundan bu şekilde devre dışı bırakarak etkilenmez. APTCA derlemelerini devre dışı bırakma desteği öncelikli olarak üçüncü taraf uygulamalara yöneliktir.
Gevşek XAML Dosyaları için Korumalı Alan Davranışı
Gevşek XAML dosyaları, herhangi bir arka kod, olay işleyicisi veya uygulamaya özgü derlemeye bağlı olmayan yalnızca işaretlemeli XAML dosyalarıdır. Gevşek XAML dosyalarına 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 uygulamada veya arasında gezilebilir olduğunda güvenlik davranışı farklıdır Frame .
Her iki durumda da gezinmiş olan gevşek XAML dosyası, ana bilgisayar uygulamasının izinlerini devralır. Ancak, özellikle güvenilir olmayan veya bilinmeyen bir varlık tarafından gevşek bir XAML dosyası üretildiyse, bu davranış bir güvenlik perspektifinden istenmeyen bir durum olabilir. Bu içerik türü, dış içerikolarak bilinir ve her ikisi de ile NavigationWindow gezindiğinde yalıtmak üzere yapılandırılabilir. Yalıtım, ve için aşağıdaki örneklerde gösterildiği gibi SandboxExternalContent özelliği true olarak ayarlanarak elde edilir 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>
Bu ayarla, dış içerik, uygulamayı barındıran işlemden ayrı bir işleme yüklenir. Bu işlem, varsayılan Internet bölgesi izin kümesiyle kısıtlıdır ve bu, barındırma uygulamasından ve istemci bilgisayardan etkin bir şekilde yalımalıdır.
Not
tek başına bir uygulamadaki veya bağımsız bir uygulamadaki gevşek XAML dosyalarına yönelik gezinti, NavigationWindowFrame , presentationhost işlemini içeren WPF tarayıcısı barındırma altyapısına göre uygulandığından, güvenlik düzeyi, içeriğin Windows Vista 'daki ınternet Explorer 'da ve Windows 7 ' de (PresentationHost aracılığıyla olmaya devam edecek şekilde) daha küçüktür. Bunun nedeni, bir Web tarayıcısı kullanan tek başına bir WPF uygulamasının Internet Explorer 'ın ek korumalı mod güvenliği özelliği sağlamasıdır.
Güvenliği geliştiren WPF uygulamaları geliştirmeye yönelik kaynaklar
Aşağıda, güvenliği geliştiren WPF uygulamaları geliştirmeye yardımcı olacak bazı ek kaynaklar verilmiştir:
| Alan | Kaynak |
|---|---|
| Yönetilen kod | Uygulamalar için modeller ve uygulamalar güvenlik kılavuzu |
| CAS | Kod erişim güvenliği |
| ClickOnce | ClickOnce güvenlik ve dağıtım |
| WPF | WPF Kısmi güven güvenliği |