Aracılığıyla paylaş


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ı, Windows Installer (.msi), XCopy veya ClickOnce kullanılarak dağıtılıp dağıtılmadığı, kısıtlanmamış izinlerle (CASFullTrust izin kümesi) yürütülür. ClickOnce ile kısmi güven kullanan bağımsız WPF uygulamalarının dağıtımı desteklenmez. Ancak, tam güvenli bir konak uygulaması, .NET Framework Eklenti modelini kullanarak kısmi güvenli bir AppDomain 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ı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ı barındırmalı uygulamalar, varsayılan olarak, varsayılan CASsınırlı İnternet bölgesi izin kümesi ile kısmi güven güvenlik korumalı alanı içinde çalıştırı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üvenilirlik 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ı gezinti, 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:

Uygulama gezintisi ile tarayıcı gezintisi arasındaki ilişki.

Bir XBAP'nin hangi tür içeriğe güvenli bir şekilde gidebileceği, esas olarak uygulama gezintisi mi yoksa tarayıcı gezintisinin mi kullanıldığına bağlı olarak 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 Kaynakderleme türüne sahip bir projeye eklenen dosyalar. pack://application:,,,/MyResourceFile.xaml
İçerik Contentderleme türüne sahip bir projeye eklenen dosyalar. pack://application:,,,/MyContentFile.xaml
Kaynak site Derleme türü Noneolan bir projeye eklenen dosyalar. pack://siteoforigin:,,,/MySiteOfOriginFile.xaml
Uygulama kodu Arka planda derlenmiş kod içeren XAML kaynakları.

-veya-

Pagederleme 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ı Gezinme . Kullanıcı bir Hyperlink öğesine tıklayarak geziniyor.

  • Programatik Gezinme. Uygulama, örneğin NavigationWindow.Source özelliğini ayarlayarak kullanıcıyı dahil etmeden geziniyor.

Tarayıcı Gezinti Güvenliği

Tarayıcı gezintisi yalnızca aşağıdaki koşullar altında güvenli kabul edilir:

  • Kullanıcı Gezinme. Kullanıcı, iç içe Framedeğil, ana NavigationWindowiçindeki bir Hyperlink öğesine tıklayarak geziniyor.

  • Bölgesi. Gidilmekte olan içerik İnternet'te veya yerel intranette bulunur.

  • Protokolü. Kullanılan protokol ya http, https, dosyaveya mailto.

XBAP bu koşullara uymayan bir şekilde içeriğe gitmeyi denerse, bir SecurityException fırlatılır.

Web'e Gözatma Yazılımı Güvenlik Ayarları

Bilgisayarınızdaki güvenlik ayarları, herhangi bir web tarayıcı yazılımının erişim seviyesini belirler. Web gözatma yazılımı, Internet Explorer ve PresentationHost.exedahil 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

  • Betik Yazma

  • Kullanıcı Kimlik Doğrulaması

Bu şekilde güvenlik altına alınabilecek işlevsellik koleksiyonu, Internet, Intranet, Güvenilen Sitelerve Kısıtlanmış Siteler bölgeleri için bölge bazında 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:

  1. Denetim Masasıaçın.

  2. Ağ ve İnternet 'e ve ardından İnternet Seçenekleri'ne tıklayın.

    İnternet Seçenekleri iletişim kutusu görüntülenir.

  3. Güvenlik sekmesinde, güvenlik ayarlarını yapılandırmak için bölgeyi seçin.

  4. Ö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.

    Güvenlik Ayarları iletişim kutusunu gösteren ekran görüntüsü.

Not

Internet Explorer'dan Internet Seçenekleri iletişim kutusuna da ulaşabilirsiniz. Araçları'ne tıklayın ve ardından İnternet Seçenekleri'e 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 ve gevşek XAML dosyalarına gidip gidemeyeceğini 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 Sor seçenekleri).

Varsayılan olarak, bu ayarların tümü Internet, Yerel intranetve güvenilen siteler bölgeleri için etkinleştirilir ve Kısıtlanmış siteler bölgesi için devre dışı bırakılır.

İ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 vermemek için; 0 izin vermek için.
LooseXamlDisallow REG_DWORD 1 yasaklamak için; 0 izin vermek için.
Web Tarayıcı Engelleme REG_DWORD 1, izin vermemek için; 0, izin vermek için.
MedyaSesEngelle REG_DWORD 1 yasaklamak için; 0 izin vermek için.
MedyaGörüntüEngelle REG_DWORD 1 izin vermemek için; 0 izin vermek için.
Medya Videosunu Engelle REG_DWORD 1 izin vermemek için; 0 izin vermek için.
ScriptInteropDisallow REG_DWORD 1 engellemek için; 0 izin vermek için.

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 WebBrowser denetimi kullanılarak doğrudan uygulamalar tarafından 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 gitmek için WebBrowser kullandığından Frame denetimi 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 InvokeScript yöntemini ve ObjectForScripting özelliğini kullanarak barındırılan betikle etkileşimdeyse geçerlidir. 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ı 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 WebBrowser denetiminin sarmaladığı WebBrowser ActiveX denetimini barındıran uygulamaları yapılandırmalarına olanak tanıyan Internet 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 Giriş ve internet özellik denetimleri.

WPF WebBrowser denetimini kullanan tek başına bir WPF 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
ÖZELLİK_OBJE_ÖNBELLEKLEME
FEATURE_SAFE_BINDTOOBJECT
ÖZELLİK_PENCERE_KISITLAMALARI
ÖZELLİK_BÖLGE_YÜKSEKLİĞİ
ÖZELLİK_DOSYA İNDİRMEYİ KISITLA
FEATURE_RESTRICT_ACTIVEXINSTALL
EKLENTİ_YÖNETİMİ_ÖZELLİĞİ
HTTP_KULLANICI_ADI_ŞİFRE_DEVRE_DIŞI_BIRAKMA_OZELLİĞİ
GÜVENLİKBANDI ÖZELLİĞİ
FEATURE_UNC_KAYITLI DOSYA KONTROLÜ
FEATURE_VALIDATE_NAVIGATE_URL
FEATURE_DISABLE_TELNET_PROTOCOL
ÖZELLİK_WEBOC_POPUPYÖNETİM
ESKİ SIKIŞTIRMA ÖZELLİĞİNİ DEVRE DIŞI BIRAKMA
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 Ana Bilgisayar Güvenliği SSS: Bölüm I ve MSHTML Ana Bilgisayar 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
ÖZELLİK_RESTRICT_RES_TO_LMZ
FEATURE_RESTRICT_ABOUT_PROTOCOL_IE7
ÖZELLİK_UYGULAMA_PROTO_İKAZ_DIYALOGU_GÖSTER
ÖZELLİK_YERELMAKİNE_KİLİTLEME
FEATURE_FORCE_ADDR_AND_STATUS
DOSYA BULUNAMADIĞINDA KISITLI ALAN ÖZELLİĞİ

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
ÖZELLİK_ETKİNLEŞTİR_SCRIPT_YAPIŞTIR_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. Internet Explorer'da Korumalı Modu Anlamak ve Çalışmak.

Not

Firefox'ta, İnternet bölgesindeyken WPF WebBrowser denetimi içeren bir XBAP çalıştırmaya çalışırsanız bir SecurityException fırlatılır. 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, AllowPartiallyTrustedCallersAttribute (APTCA) ile işaretlenmeleri gerekir. 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.

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, bağımsız bir uygulamadan NavigationWindow veya Frame'e geçilerek gevşek XAML dosyalarına gidildiğinde güvenlik davranışı farklıdır.

Her iki durumda da, erişilen bağımsız XAML dosyası, konak uygulamanı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 hem hem de , adresine gidildiğinde içeriği yalıtacak şekilde yapılandırılabilir. Yalıtım, SandboxExternalContent özelliği Frame ve NavigationWindowiçin aşağıdaki örneklerde gösterildiği gibi 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.

Nôt

Tek başına bir uygulamada, NavigationWindow veya Frame'den gevşek XAML dosyalarına gezinme, PresentationHost işlemini içeren WPF tarayıcı barındırma altyapısı üzerine kurulmuş olsa da, güvenlik düzeyi, içeriğin doğrudan Windows Vista ve Windows 7 üzerinde Internet Explorer'da yüklenmesi durumuna nazaran biraz daha düşüktür (yine de PresentationHost aracılığıyla). 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 Desenler ve Uygulamalar için Güvenlik Kılavuzu
CAS Kod Erişimi Güvenlik
ClickOnce ClickOnce Güvenlik ve Dağıtım
WPF WPF Kısmi Güven Güvenliği

Ayrıca bkz.