Güvenlik (WPF)
Windows Presentation Foundation (WPF) tek başına ve tarayıcıda barındırılan uygulamalar geliştirirken güvenlik modelini dikkate almanız gerekir. WPF tek başına uygulamaları, Ister Windows Installer (.msi), XCopy ister ClickOnce kullanılarak dağıtılsın, sınırsız izinlerle (CASFullTrust izin kümesi) yürütülür. ClickOnce ile kısmi güven, tek başına WPF uygulamalarının dağıtılması desteklenmez. Ancak, tam güven konak uygulaması .NET Framework Eklenti modelini kullanarak kısmi güven AppDomain oluşturabilir. Daha fazla bilgi için bkz . WPF Eklentilerine Genel Bakış.
WPF tarayıcı tarafından barındırılan uygulamalar Windows Internet Explorer veya Firefox tarafından barındırılır ve XAML tarayıcı uygulamaları (XBAP' ler) veya gevşek Genişletilebilir Uygulama biçimlendirme dili (XAML) belgeleri olabilir. Daha fazla bilgi için bkz . WPF XAML Tarayıcı Uygulamalarına Genel Bakış.
Uyarı
XBAP'ler, Internet Explorer ve Firefox'un eski sürümleri gibi eski tarayıcıların çalıştırılmasını gerektirir. Bu eski tarayıcılar genellikle Windows 10 ve Windows 11'de desteklenmez. Modern tarayıcılar artık güvenlik riskleri nedeniyle XBAP uygulamaları için gereken teknolojiyi desteklemiyor. XBAP'leri etkinleştiren eklentiler artık desteklenmemektedir. Daha fazla bilgi için bkz . WPF tarayıcı tarafından barındırılan uygulamalar (XBAP) hakkında sık sorulan sorular.
WPF tarayıcı tarafından barındırılan uygulamalar, varsayılan olarak varsayılan CASİnternet bölgesi izin kümesiyle sınırlı olan kısmi güven güvenlik korumalı alanı içinde yürütülür. Bu, WPF tarayıcı tarafından barındırılan uygulamaları istemci bilgisayardan, normal Web uygulamalarının yalıtılmış olmasını beklediğiniz şekilde etkili bir şekilde yalıtıyor. XBAP, dağıtım URL'sinin güvenlik bölgesine ve istemcinin güvenlik yapılandırmasına bağlı olarak Tam Güven'e kadar ayrıcalıkları yükseltebilir. Daha fazla bilgi için bkz . WPF Kısmi Güven Güvenliği.
Bu konu başlığında, windows presentation foundation (WPF) tek başına ve tarayıcıda barındırılan uygulamalar için güvenlik modeli açıklanmaktadır.
Bu konu, aşağıdaki bölümleri içerir:
Güvenli Gezinti
XBAP'ler için WPF iki gezinti türünü ayırt eder: 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ştiren gezintidir. Uygulama gezintisi (genellikle XAML) ile tarayıcı gezintisi (genellikle HTML) arasındaki ilişki aşağıdaki çizimde gösterilmiştir:
Bir XBAP'nin gidebilecekleri içerik türü öncelikli olarak uygulama gezintisi veya tarayıcı gezintisinin kullanılıp kullanılmadığına göre belirlenir.
Uygulama Gezinti Güvenliği
Uygulama gezintisi, dört içerik türünü destekleyen bir paket URI'siyle tanımlanabilirse 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 | Arka planda derlenmiş kod içeren XAML kaynakları. -veya- Sayfa derleme türüne sahip bir projeye eklenen XAML dosyaları. |
pack://application:,,,/MyResourceFile .xaml |
Not
Uygulama veri dosyaları ve paket URI'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ı veya program aracılığıyla gidebilir:
Kullanıcı Gezintisi. Kullanıcı bir Hyperlink öğeye tıklayarak geziniyor.
Programlı Gezinti. Uygulama, örneğin özelliğini ayarlayarak kullanıcıyı dahil etmeden geziniyor NavigationWindow.Source .
Tarayıcı Gezinti Güvenliği
Tarayıcı gezintisi yalnızca aşağıdaki koşullar altında güvenli kabul edilir:
Kullanıcı Gezintisi. Kullanıcı, iç içe yerleştirilmiş bir Hyperlink öğesinde değil ana NavigationWindowöğesinde bulunan bir öğeye tıklayarak geziniyor Frame.
Bölge. Gidilmekte olan içerik İnternet'te veya yerel intranette bulunur.
Protokol. Kullanılan protokol http, https, dosya veya mailto şeklindedir.
XBAP bu koşullara uymayan bir şekilde içeriğe gitmeyi denerse, bir SecurityException oluşturulur.
Web'e Gözatma Yazılımı Güvenlik Ayarları
Bilgisayarınızdaki güvenlik ayarları, web'e gözatma yazılımlarına erişim izni verildiğini belirler. Web gözatma yazılımı, Internet Explorer ve PresentationHost.exe dahil olmak üzere WinINet veya UrlMon API'lerini kullanan tüm uygulama veya bileşenleri içerir.
Internet Explorer, Internet Explorer tarafından veya Internet Explorer'dan yürütülmesine izin verilen işlevleri yapılandırabileceğiniz bir mekanizma sağlar ve aşağıdakileri içerir:
.NET Framework tabanlı bileşenler
ActiveX denetimleri ve eklentileri
İndirmeler
Komut dosyası
Kullanıcı Kimlik Doğrulaması
Bu şekilde güvenli hale getirilebilen işlevsellik koleksiyonu, İnternet, İntranet, Güvenilen Siteler ve Kısıtlanmış Siteler bölgeleri için her bölge temelinde yapılandırılır. Aşağıdaki adımlarda güvenlik ayarlarınızın nasıl yapılandırıldığı açıklanmaktadır:
Denetim Masası'nı açın.
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ırmak için bölgeyi seçin.
Özel Düzey düğmesine tıklayın.
Güvenlik Ayarları iletişim kutusu görüntülenir ve seçili bölge için güvenlik ayarlarını yapılandırabilirsiniz.
Not
Internet Explorer'dan Internet Seçenekleri iletişim kutusuna da ulaşabilirsiniz. Araçlar'a ve ardından İnternet Seçenekleri'ne tıklayın.
Windows Internet Explorer 7'den başlayarak, .NET Framework için özel olarak aşağıdaki güvenlik ayarları eklenmiştir:
Gevşek XAML. Internet Explorer'ın XAML dosyalarına gidip gitmeyeceğini ve gevşek olup olmayacağını denetler. (Etkinleştir, Devre Dışı Bırak ve İstem seçenekleri).
XAML tarayıcı uygulamaları. Internet Explorer'ın XBAP'lere gidip gitmeyeceğini ve çalıştırıp çalıştıramayacağını denetler. (Etkinleştir, Devre Dışı Bırak ve İstem seçenekleri).
Varsayılan olarak, bu ayarların tümü İ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 sağlanan güvenlik ayarlarına ek olarak, aşağıdaki kayıt defteri değerleri bir dizi güvenliğe duyarlı WPF özelliğini seçmeli olarak engellemek için 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 ayarlanabilen değerler listelemektedir.
Değer Adı | Değer Türü | Değer Verileri |
---|---|---|
XBAPDisallow | REG_DWORD | 1 izin vermek için; İzin vermek için 0. |
LooseXamlDisallow | REG_DWORD | 1 izin vermek için; İzin vermek için 0. |
WebBrowserDisallow | REG_DWORD | 1 izin vermek için; İzin vermek için 0. |
MediaAudioDisallow | REG_DWORD | 1 izin vermek için; İzin vermek için 0. |
MediaImageDisallow | REG_DWORD | 1 izin vermek için; İzin vermek için 0. |
MediaVideoDisallow | REG_DWORD | 1 izin vermek için; İzin vermek için 0. |
ScriptInteropDisallow | REG_DWORD | 1 izin vermek 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 alınan WebBrowser ActiveX denetimini sarmalar. WPF, güvenilmeyen Web içeriğini barındırmak için WPF WebBrowser denetimini kullandığınızda uygulamanızın güvenliğini sağlamak için bazı destek sağlar. Ancak, bazı güvenlik özelliklerinin denetimi kullanan WebBrowser uygulamalar tarafından doğrudan uygulanması gerekir. WebBrowser ActiveX denetimi hakkında daha fazla bilgi için bkz . WebBrowser Denetimine Genel Bakışlar ve Öğreticiler.
Not
Bu bölüm, HTML içeriğine Frame gitmek için öğesini WebBrowser 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ın uygulama kodunuzu kötü amaçlı olabilecek HTML betik kodundan yalıtmaya yardımcı olması için kısmi güven AppDomain kullanması gerekir. Bu durum özellikle uygulamanız yöntemini ve ObjectForScripting özelliğini kullanarak InvokeScript barındırılan betikle etkileşimdeyse geçerlidir. Daha fazla bilgi için bkz . WPF Eklentilerine Genel Bakış.
Uygulamanız WPF WebBrowser denetimini kullanıyorsa, güvenliği artırmanın ve saldırıları azaltmanın bir diğer yolu da Internet Explorer özellik denetimlerini etkinleştirmektir. Özellik denetimleri, yöneticilerin ve geliştiricilerin Internet Explorer'ın özelliklerini ve WPF denetiminin sarmaladığı WebBrowser ActiveX denetimini barındıran uygulamaları yapılandırmalarına olanak tanıyan Internet WebBrowser Explorer eklemeleridir. Ö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 ve İnternet Özellik Denetimlerine Giriş.
WPF denetimini kullanan tek başına bir WPF WebBrowser uygulaması geliştiriyorsanız WPF, uygulamanız için aşağıdaki özellik denetimlerini otomatik olarak etkinleştirir.
Ö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 etkilenebilir. Bu durumda, belirli bir uygulama ve barındırmış olduğu içerik için güvenlik riski yoksa ilgili özellik denetimi devre dışı bırakılabilir.
Özellik denetimleri, WebBrowser ActiveX nesnesinin örneğini oluşturan işlem tarafından uygulanır. Bu nedenle, güvenilmeyen içeriğe gidebilen tek başına bir uygulama oluşturuyorsanız, ek özellik denetimlerini etkinleştirmeyi ciddi şekilde düşünmelisiniz.
Not
Bu öneri, MSHTML ve SHDOCVW konak güvenliği için genel önerilere dayanır. Daha fazla bilgi için bkz . MSHTML Konak Güvenliği SSS: Bölüm I of II ve MSHTML Konak Güvenliği SSS: Bölüm II.
Yürütülebilir dosyanız için kayıt defteri değerini 1 olarak ayarlayarak aşağıdaki özellik denetimlerini etkinleştirmeyi göz önünde bulundurun.
Ö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 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 Internet Explorer'da WPF WebBrowser denetimi içeren bir kısmi güven XAML tarayıcı uygulaması (XBAP) çalıştırırsanız WPF, Internet Explorer işleminin adres alanında WebBrowser ActiveX denetimini barındırıyor. WebBrowser ActiveX denetimi Internet Explorer işleminde barındırıldığından, WebBrowser ActiveX denetimi için Internet Explorer'a yönelik tüm özellik denetimleri de etkinleştirilir.
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, Internet Explorer ve dolayısıyla WebBrowser ActiveX denetiminin Windows Vista ve Windows 7'de varsayılan olarak korumalı modda çalışmasıdır. Korumalı mod hakkında daha fazla bilgi için bkz . Korumalı Modda Internet Explorer'ı Anlama ve Çalışma.
Not
Firefox'ta WPF WebBrowser denetimi içeren bir XBAP çalıştırmaya çalışırsanız, İnternet bölgesindeyken bir SecurityException oluşturulur. 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üklendiğinde, kullanıcının bunları yüklemek için açık izin sağlaması gerektiğinden bunlar tam olarak güvenilir hale gelir. Bunlar 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 , (APTCA) ile AllowPartiallyTrustedCallersAttribute işaretlenmelidir. Yalnızca kısmi güven içinde yürütülmek üzere güvenli olarak test edilmiş derlemeler bu öznitelikle işaretlenmelidir.
Ancak, GAC'ye yüklendikten sonra bir APTCA derlemesinin bir güvenlik açığı sergilemesi mümkündür. Bir güvenlik açığı bulunduğunda, derleme yayımcıları mevcut yüklemelerdeki sorunu düzeltmek ve sorun bulunduktan sonra oluşabilecek yüklemelere karşı koruma sağlamak için bir güvenlik güncelleştirmesi oluşturabilir. Güncelleştirmenin bir seçeneği derlemeyi kaldırmaktır, ancak bu, derlemeyi kullanan diğer tam güvenilir istemci uygulamalarını bozabilir.
WPF, APTCA derlemesini kaldırmadan kısmen güvenilen XBAP'ler için bir APTCA derlemesinin devre dışı bırakılabildiği 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 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 etkinleştiren veya devre dışı bırakan bir değer oluşturmanız gerekir. Değerin ayrıntıları aşağıdadı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 ' ı seçin.
Bir derlemenin kısmen güvenilen istemci uygulamaları için devre dışı bırakılması gerekiyorsa, kayıt defteri anahtarını ve değerini oluşturan bir güncelleştirme yazabilirsiniz.
Not
Yönetilen uygulamaların çalışması için gerekli olduğundan çekirdek .NET Framework derlemeleri bu şekilde devre dışı bırakıldığından etkilenmez. APTCA derlemelerini devre dışı bırakma desteği öncelikli olarak üçüncü taraf uygulamaları hedeflemektedir.
Gevşek XAML Dosyaları için Korumalı Alan Davranışı
Gevşek XAML dosyaları, arka planda koda, olay işleyiciye veya uygulamaya özgü derlemelere bağımlı olmayan yalnızca işaretleme XAML dosyalarıdır. Gevşek XAML dosyalarına doğrudan tarayıcıdan gidildiğinde, bunlar varsayılan İnternet bölgesi izin kümesine göre bir güvenlik korumalı alanına yüklenir.
Ancak, tek başına bir uygulamada gevşek XAML dosyalarına veya uygulamasından NavigationWindow Frame gidildiğinde güvenlik davranışı farklıdır.
Her iki durumda da, adresine gidilen gevşek XAML dosyası, konak uygulamasının izinlerini devralır. Ancak bu davranış güvenlik açısından istenmeyen bir durum olabilir, özellikle de güvenilir olmayan veya bilinmeyen bir varlık tarafından gevşek bir XAML dosyası oluşturulduysa. Bu içerik türü dış içerik olarak bilinir ve her ikisi de Frame olarak bilinir ve NavigationWindow adresine gidildiğinde içeriği yalıtacak şekilde yapılandırılabilir. Yalıtım, ve NavigationWindowiçin Frame aşağıdaki örneklerde gösterildiği gibi SandboxExternalContent özelliği true olarak ayarlanarak elde edilir:
<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 sınırlıdır ve bunu barındırma uygulamasından ve istemci bilgisayardan etkili bir şekilde yalıtılır.
Not
Tek başına bir uygulamadaki veya Frame bir NavigationWindow uygulamadaki gevşek XAML dosyalarına gezinti, PresentationHost işlemini içeren WPF tarayıcı barındırma altyapısını temel alarak uygulansa da, güvenlik düzeyi içeriğin Doğrudan Windows Vista ve Windows 7 üzerinde Internet Explorer'a yüklenmesinden biraz daha azdır (yine de PresentationHost aracılığıyla olabilir). Bunun nedeni, Web tarayıcısı kullanan tek başına bir WPF uygulamasının Internet Explorer'ın ek Korumalı Mod güvenlik özelliğini sağlamamasıdır.
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ğıdadır:
Alan | Kaynak |
---|---|
Yönetilen kod | Uygulamalar için Desenler ve Uygulamalar Güvenlik Kılavuzu |
CAS | Kod Erişim Güvenliği |
ClickOnce | ClickOnce Güvenliği ve Dağıtımı |
WPF | WPF Kısmi Güven Güvenliği |
Ayrıca bkz.
.NET Desktop feedback