Keamanan (WPF)
Saat mengembangkan aplikasi mandiri Windows Presentation Foundation (WPF) dan yang dihosting browser, Anda harus mempertimbangkan model keamanan. Aplikasi mandiri WPF dijalankan dengan izin tidak terbatas (set izin CASFullTrust ), baik disebarkan menggunakan Windows Installer (.msi), XCopy, atau ClickOnce. Menyebarkan aplikasi WPF mandiri dan kepercayaan parsial dengan ClickOnce tidak didukung. Namun, aplikasi host kepercayaan penuh dapat membuat kepercayaan AppDomain parsial menggunakan model Add-in .NET Framework. Untuk informasi selengkapnya, lihat Gambaran Umum Add-In WPF.
Aplikasi yang dihosting browser WPF dihosting oleh Windows Internet Explorer atau Firefox, dan dapat berupa aplikasi browser XAML (XBAP) atau dokumen Extensible Application Markup Language (XAML) yang longgar Untuk informasi selengkapnya, lihat Gambaran Umum Aplikasi Browser WPF XAML.
Peringatan
XBAP memerlukan browser warisan untuk beroperasi, seperti Internet Explorer dan firefox versi lama. Browser lama ini biasanya tidak didukung pada Windows 10 dan Windows 11. Browser modern tidak lagi mendukung teknologi yang diperlukan untuk aplikasi XBAP karena risiko keamanan. Plugin yang mengaktifkan XBAP tidak lagi didukung. Untuk informasi selengkapnya, lihat Tanya jawab umum tentang aplikasi yang dihosting browser WPF (XBAP).
Aplikasi yang dihosting browser WPF dijalankan dalam kotak pasir keamanan kepercayaan parsial, secara default, yang terbatas pada kumpulan izin zona Internet CASdefault. Ini secara efektif mengisolasi aplikasi yang dihosting browser WPF dari komputer klien dengan cara yang sama seperti Yang Anda harapkan aplikasi Web biasa terisolasi. XBAP dapat meningkatkan hak istimewa, hingga Kepercayaan Penuh, tergantung pada zona keamanan URL penyebaran dan konfigurasi keamanan klien. Untuk informasi selengkapnya, lihat Keamanan Kepercayaan Parsial WPF.
Topik ini membahas model keamanan untuk aplikasi mandiri Windows Presentation Foundation (WPF) dan yang dihosting browser.
Topik ini berisi bagian berikut:
Menonaktifkan Rakitan APTCA untuk Sebagian Aplikasi Klien Tepercaya
Sumber Daya untuk Mengembangkan Aplikasi WPF yang Mempromosikan Keamanan
Navigasi Aman
Untuk XBAP, WPF membedakan dua jenis navigasi: aplikasi dan browser.
Navigasi aplikasi adalah navigasi antara item konten dalam aplikasi yang dihosting oleh browser. Navigasi browser adalah navigasi yang mengubah konten dan URL lokasi browser itu sendiri. Hubungan antara navigasi aplikasi (biasanya XAML) dan navigasi browser (biasanya HTML) diperlihatkan dalam ilustrasi berikut:
Jenis konten yang dianggap aman bagi XBAP untuk dinavigasi terutama ditentukan oleh apakah navigasi aplikasi atau navigasi browser digunakan.
Keamanan Navigasi Aplikasi
Navigasi aplikasi dianggap aman jika dapat diidentifikasi dengan URI paket, yang mendukung empat jenis konten:
Jenis Konten | Deskripsi | Contoh URI |
---|---|---|
Sumber daya | File yang ditambahkan ke proyek dengan jenis build Sumber Daya. | pack://application:,,,/MyResourceFile.xaml |
Konten | File yang ditambahkan ke proyek dengan jenis build Konten. | pack://application:,,,/MyContentFile.xaml |
Situs asal | File yang ditambahkan ke proyek dengan jenis build Tidak Ada. | pack://siteoforigin:,,,/MySiteOfOriginFile.xaml |
Kode aplikasi | Sumber daya XAML yang memiliki kode yang dikompilasi di belakang. -atau- File XAML yang ditambahkan ke proyek dengan jenis build Halaman. |
pack://application:,,,/MyResourceFile .xaml |
Catatan
Untuk informasi selengkapnya tentang file data aplikasi dan URI paket, lihat Sumber Daya Aplikasi, Konten, dan File Data WPF.
File tipe isi ini dapat dinavigasi oleh pengguna atau secara terprogram:
Navigasi Pengguna. Pengguna menavigasi dengan mengklik Hyperlink elemen.
Navigasi Terprogram. Aplikasi menavigasi tanpa melibatkan pengguna, misalnya, dengan mengatur NavigationWindow.Source properti .
Keamanan Navigasi Browser
Navigasi browser dianggap aman hanya dalam kondisi berikut:
Navigasi Pengguna. Pengguna menavigasi dengan mengklik Hyperlink elemen yang berada di dalam utama NavigationWindow, bukan dalam berlapis Frame.
Zona. Konten yang sedang dinavigasi berada di Internet atau intranet lokal.
Protokol. Protokol yang digunakan adalah http, https, file, atau mailto.
Jika XBAP mencoba menavigasi ke konten dengan cara yang tidak mematuhi kondisi ini, akan SecurityException dilemparkan.
Pengaturan Keamanan Perangkat Lunak Penjelajahan Web
Setelan keamanan pada komputer Anda menentukan akses yang diberikan peranti lunak penjelajah web. Perangkat lunak penjelajahan web mencakup aplikasi atau komponen apa pun yang menggunakan API WinINet atau UrlMon , termasuk Internet Explorer dan PresentationHost.exe.
Internet Explorer menyediakan mekanisme di mana Anda dapat mengonfigurasi fungsionalitas yang diizinkan untuk dijalankan oleh atau dari Internet Explorer, termasuk yang berikut ini:
Komponen yang bergantung pada .NET Framework
Kontrol dan plug-in ActiveX
Unduhan
Pembuatan skrip
Otentikasi Pengguna
Kumpulan fungsionalitas yang dapat diamankan dengan cara ini dikonfigurasi per zona untuk zona Internet, Intranet, Situs Tepercaya, dan Situs Terbatas. Langkah-langkah berikut menjelaskan cara mengonfigurasi pengaturan keamanan Anda:
Buka Panel Kontrol.
Klik Jaringan dan Internet lalu klik Opsi Internet.
Kotak dialog Opsi Internet muncul.
Pada tab Keamanan , pilih zona untuk mengonfigurasi pengaturan keamanan.
Klik tombol Tingkat Kustom.
Kotak dialog Pengaturan Keamanan muncul dan Anda dapat mengonfigurasi pengaturan keamanan untuk zona yang dipilih.
Catatan
Anda juga bisa masuk ke kotak dialog Opsi Internet dari Internet Explorer. Klik Alat lalu klik Opsi Internet.
Dimulai dengan Windows Internet Explorer 7, pengaturan keamanan berikut khusus untuk .NET Framework disertakan:
XAML longgar. Mengontrol apakah Internet Explorer dapat menavigasi ke dan melepaskan file XAML. (Opsi Aktifkan, Nonaktifkan, dan Perintah).
Aplikasi browser XAML. Mengontrol apakah Internet Explorer dapat menavigasi ke dan menjalankan XBAP. (Opsi Aktifkan, Nonaktifkan, dan Perintah).
Secara default, semua setelan ini diaktifkan untuk zona Internet, Intranet lokal, dan Situs tepercaya, dan dinonaktifkan untuk zona situs terbatas.
Pengaturan Registri WPF terkait keamanan
Selain pengaturan keamanan yang tersedia melalui Opsi Internet, nilai registri berikut ini tersedia untuk memblokir sejumlah fitur WPF yang sensitif terhadap keamanan secara selektif. Nilai ditentukan di bawah kunci berikut:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Windows Presentation Foundation\Features
Tabel berikut mencantumkan nilai yang bisa diatur.
Nama Nilai | Jenis Nilai | Data Nilai |
---|---|---|
XBAPDisallow | REG_DWORD | 1 untuk melarang; 0 untuk memungkinkan. |
LooseXamlDisallow | REG_DWORD | 1 untuk melarang; 0 untuk memungkinkan. |
WebBrowserDisallow | REG_DWORD | 1 untuk melarang; 0 untuk memungkinkan. |
MediaAudioDisallow | REG_DWORD | 1 untuk melarang; 0 untuk memungkinkan. |
MediaImageDisallow | REG_DWORD | 1 untuk melarang; 0 untuk memungkinkan. |
MediaVideoDisallow | REG_DWORD | 1 untuk melarang; 0 untuk memungkinkan. |
ScriptInteropDisallow | REG_DWORD | 1 untuk melarang; 0 untuk memungkinkan. |
Kontrol WebBrowser dan Kontrol Fitur
Kontrol WPF WebBrowser dapat digunakan untuk menghosting konten Web. Kontrol WPF WebBrowser membungkus kontrol WebBrowser ActiveX yang mendasar. WPF menyediakan beberapa dukungan untuk mengamankan aplikasi Anda saat Anda menggunakan kontrol WPF WebBrowser untuk menghosting konten Web yang tidak tepercaya. Namun, beberapa fitur keamanan harus diterapkan langsung oleh aplikasi menggunakan WebBrowser kontrol. Untuk informasi selengkapnya tentang kontrol WebBrowser ActiveX, lihat Gambaran Umum dan Tutorial Kontrol WebBrowser.
Catatan
Bagian ini juga berlaku untuk Frame kontrol karena menggunakan WebBrowser untuk menavigasi ke konten HTML.
Jika kontrol WPF WebBrowser digunakan untuk menghosting konten Web yang tidak tepercaya, aplikasi Anda harus menggunakan kepercayaan AppDomain parsial untuk membantu mengisolasi kode aplikasi Anda dari kode skrip HTML yang berpotensi berbahaya. Ini terutama berlaku jika aplikasi Anda berinteraksi dengan skrip yang dihosting dengan menggunakan InvokeScript metode dan ObjectForScripting properti . Untuk informasi selengkapnya, lihat Gambaran Umum Add-In WPF.
Jika aplikasi Anda menggunakan kontrol WPF WebBrowser , cara lain untuk meningkatkan keamanan dan mengurangi serangan adalah dengan mengaktifkan kontrol fitur Internet Explorer. Kontrol fitur adalah penambahan pada Internet Explorer yang memungkinkan administrator dan pengembang mengonfigurasi fitur Internet Explorer dan aplikasi yang menghosting kontrol WebBrowser ActiveX, yang dibungkus kontrol WPF WebBrowser . Kontrol fitur dapat dikonfigurasi dengan menggunakan fungsi CoInternetSetFeatureEnabled atau dengan mengubah nilai dalam registri. Untuk informasi selengkapnya tentang kontrol fitur, lihat Pengenalan Kontrol Fitur dan Kontrol Fitur Internet.
Jika Anda mengembangkan aplikasi WPF mandiri yang menggunakan kontrol WPF WebBrowser , WPF secara otomatis mengaktifkan kontrol fitur berikut untuk aplikasi Anda.
Kontrol Fitur |
---|
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 |
Karena kontrol fitur ini diaktifkan tanpa syarat, aplikasi kepercayaan penuh mungkin terganggu oleh mereka. Dalam hal ini, jika tidak ada risiko keamanan untuk aplikasi tertentu dan konten yang dihostingnya, kontrol fitur yang sesuai dapat dinonaktifkan.
Kontrol fitur diterapkan oleh proses yang membuat instans objek WebBrowser ActiveX. Oleh karena itu, jika Anda membuat aplikasi mandiri yang dapat menavigasi ke konten yang tidak tepercaya, Anda harus mempertimbangkan untuk mengaktifkan kontrol fitur tambahan dengan serius.
Catatan
Rekomendasi ini didasarkan pada rekomendasi umum untuk keamanan host MSHTML dan SHDOCVW. Untuk informasi selengkapnya, lihat FAQ Keamanan Host MSHTML: Bagian I dari II dan FAQ Keamanan Host MSHTML: Bagian II.
Untuk executable Anda, pertimbangkan untuk mengaktifkan kontrol fitur berikut dengan mengatur nilai registri ke 1.
Kontrol Fitur |
---|
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 |
Untuk executable Anda, pertimbangkan untuk menonaktifkan kontrol fitur berikut dengan mengatur nilai registri ke 0.
Kontrol Fitur |
---|
FEATURE_ENABLE_SCRIPT_PASTE_URLACTION_IF_PROMPT |
Jika Anda menjalankan aplikasi browser XAML kepercayaan parsial (XBAP) yang menyertakan kontrol WPF WebBrowser di Windows Internet Explorer, WPF menghosting kontrol WebBrowser ActiveX di ruang alamat proses Internet Explorer. Karena kontrol WebBrowser ActiveX dihosting dalam proses Internet Explorer, semua kontrol fitur untuk Internet Explorer juga diaktifkan untuk kontrol WebBrowser ActiveX.
XBAP yang berjalan di Internet Explorer juga mendapatkan tingkat keamanan tambahan dibandingkan dengan aplikasi mandiri normal. Keamanan tambahan ini karena Internet Explorer, dan oleh karena itu kontrol WebBrowser ActiveX, berjalan dalam mode terlindungi secara default pada Windows Vista dan Windows 7. Untuk informasi selengkapnya tentang mode terproteksi, lihat Memahami dan Bekerja dalam Mode Terproteksi Internet Explorer.
Catatan
Jika Anda mencoba menjalankan XBAP yang menyertakan kontrol WPF WebBrowser di Firefox, saat berada di zona Internet, SecurityException akan dilemparkan. Hal ini disebabkan oleh kebijakan keamanan WPF.
Menonaktifkan Rakitan APTCA untuk Sebagian Aplikasi Klien Tepercaya
Ketika rakitan terkelola diinstal ke dalam cache perakitan global (GAC), mereka menjadi sepenuhnya tepercaya karena pengguna harus memberikan izin eksplisit untuk menginstalnya. Karena mereka sepenuhnya tepercaya, hanya aplikasi klien terkelola yang sepenuhnya tepercaya yang dapat menggunakannya. Untuk memungkinkan aplikasi tepercaya sebagian menggunakannya, aplikasi harus ditandai dengan AllowPartiallyTrustedCallersAttribute (APTCA). Hanya rakitan yang telah diuji agar aman untuk eksekusi dalam kepercayaan parsial yang harus ditandai dengan atribut ini.
Namun, dimungkinkan bagi rakitan APTCA untuk menunjukkan kelemahan keamanan setelah dipasang ke GAC . Setelah kelemahan keamanan ditemukan, penerbit rakitan dapat menghasilkan pembaruan keamanan untuk memperbaiki masalah pada penginstalan yang ada, dan untuk melindungi dari penginstalan yang mungkin terjadi setelah masalah ditemukan. Salah satu opsi untuk pembaruan adalah menghapus instalan rakitan, meskipun itu dapat merusak aplikasi klien tepercaya lainnya yang menggunakan assembly.
WPF menyediakan mekanisme di mana rakitan APTCA dapat dinonaktifkan untuk XBAP tepercaya sebagian tanpa menghapus instalan rakitan APTCA.
Untuk menonaktifkan rakitan APTCA, Anda harus membuat kunci registri khusus:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\policy\APTCA\<AssemblyFullName>, FileVersion=<AssemblyFileVersion>
Berikut ini memperlihatkan contoh:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\policy\APTCA\aptcagac, Version=1.0.0.0, Culture=neutral, PublicKeyToken=215e3ac809a0fea7, FileVersion=1.0.0.0
Kunci ini menetapkan entri untuk rakitan APTCA. Anda juga harus membuat nilai dalam kunci ini yang mengaktifkan atau menonaktifkan rakitan. Berikut ini adalah detail nilai:
Nama Nilai: APTCA_FLAG.
Jenis Nilai: REG_DWORD.
Data Nilai: 1 untuk dinonaktifkan; 0 untuk mengaktifkan.
Jika rakitan harus dinonaktifkan untuk aplikasi klien yang tepercaya sebagian, Anda dapat menulis pembaruan yang membuat kunci dan nilai registri.
Catatan
Rakitan Core .NET Framework tidak terpengaruh dengan menonaktifkannya dengan cara ini karena diperlukan untuk menjalankan aplikasi terkelola. Dukungan untuk menonaktifkan rakitan APTCA terutama ditargetkan ke aplikasi pihak ketiga.
Perilaku Kotak Pasir untuk File XAML Longgar
File XAML longgar adalah file XAML khusus markup yang tidak bergantung pada kode di belakang, penanganan aktivitas, atau rakitan khusus aplikasi. Ketika file XAML yang longgar dinavigasi ke langsung dari browser, file tersebut dimuat dalam kotak pasir keamanan berdasarkan kumpulan izin zona Internet default.
Namun, perilaku keamanan berbeda ketika file XAML longgar dinavigasi dari NavigationWindow atau Frame dalam aplikasi mandiri.
Dalam kedua kasus, file XAML longgar yang dinavigasi untuk mewarisi izin aplikasi hostnya. Namun, perilaku ini mungkin tidak diinginkan dari perspektif keamanan, terutama jika file XAML longgar diproduksi oleh entitas yang tidak tepercaya atau tidak diketahui. Jenis konten ini dikenal sebagai konten eksternal, dan keduanya Frame dan NavigationWindow dapat dikonfigurasi untuk mengisolasinya saat dinavigasi. Isolasi dicapai dengan mengatur properti SandboxExternalContent ke true, seperti yang ditunjukkan dalam contoh berikut untuk Frame dan 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>
Dengan pengaturan ini, konten eksternal akan dimuat ke dalam proses yang terpisah dari proses yang menghosting aplikasi. Proses ini dibatasi untuk set izin zona Internet default, secara efektif mengisolasinya dari aplikasi hosting dan komputer klien.
Catatan
Meskipun navigasi ke file XAML longgar dari NavigationWindow atau Frame dalam aplikasi mandiri diimplementasikan berdasarkan infrastruktur hosting browser WPF, yang melibatkan proses PresentationHost, tingkat keamanan sedikit lebih sedikit daripada ketika konten dimuat langsung di Internet Explorer pada Windows Vista dan Windows 7 (yang masih akan melalui PresentationHost). Ini karena aplikasi WPF mandiri yang menggunakan browser Web tidak menyediakan fitur keamanan Mode Terproteksi tambahan dari Internet Explorer.
Sumber Daya untuk Mengembangkan Aplikasi WPF yang Mempromosikan Keamanan
Berikut ini adalah beberapa sumber daya tambahan untuk membantu mengembangkan aplikasi WPF yang mempromosikan keamanan:
Luas | Sumber daya |
---|---|
Kode terkelola | Panduan Keamanan Pola dan Praktik untuk Aplikasi |
CAS | Keamanan Akses Kode |
ClickOnce | Keamanan dan Penyebaran ClickOnce |
WPF | Keamanan Kepercayaan Parsial WPF |
Lihat juga
.NET Desktop feedback