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:

Relationship between application navigation and browser navigation.

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:

  1. Denetim Masası.

  2. 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ıracak 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çilen bölge için güvenlik ayarlarını yapılandırabilirsiniz.

    Screenshot that shows the Security Settings dialog box.

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.

İ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

Ayrıca bkz.