Keamanan (WPF)
Saat mengembangkan aplikasi mandiri Windows Presentation Foundation (WPF) dan yang dihosting browser, Anda harus mempertimbangkan model keamanan. Aplikasi mandiri WPF dieksekusi dengan izin tidak terbatas (set izin CASFullTrust), baik saat disebarkan menggunakan Penginstal Windows (.msi), XCopy, atau ClickOnce. Menyebarkan aplikasi WPF mandiri dengan kepercayaan parsial menggunakan ClickOnce tidak didukung. Namun, aplikasi host dengan kepercayaan penuh dapat membuat AppDomain dengan kepercayaan parsial menggunakan model Add-in .NET Framework. Untuk informasi selengkapnya, lihat gambaran umum Add-Ins 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 dieksekusi dalam sandbox keamanan berkepercayaan parsial, secara default, yang terbatas pada set izin zona Internet default CAS. Ini secara efektif mengisolasi aplikasi yang di-hosting browser WPF dari komputer klien dengan cara yang sama seperti yang Anda harapkan dari aplikasi web yang biasa. 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:
Navigasi Aman
Menonaktifkan Majelis APTCA untuk Aplikasi Klien Sebagian 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:
Tipe Isi | Deskripsi | Contoh URI |
---|---|---|
Sumber daya | File yang ditambahkan ke proyek dengan jenis build Resource. | pack://application:,,,/MyResourceFile.xaml |
Konten | File-file yang ditambahkan ke proyek dengan tipe build Konten. | pack://application:,,,/MyContentFile.xaml |
Situs asal | File yang ditambahkan ke proyek dengan jenis build None. | 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 Page. |
pack://application:,,,/MyResourceFile
.xaml
|
Nota
Untuk informasi selengkapnya tentang file data aplikasi dan URI paket, lihat Sumber Daya Aplikasi WPF, Konten, dan File Data.
File tipe isi ini dapat dinavigasi oleh pengguna atau secara terprogram:
Navigasi Pengguna . Pengguna menavigasi dengan mengklik elemen Hyperlink.
Navigasi Terprogram . Aplikasi menavigasi tanpa melibatkan pengguna, misalnya, dengan mengatur properti NavigationWindow.Source.
Keamanan Navigasi Browser
Navigasi browser dianggap aman hanya dalam kondisi berikut:
Navigasi Pengguna . Pengguna menavigasi dengan mengklik elemen Hyperlink yang berada dalam NavigationWindowutama , bukan dalam Frameberlapis .
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 memenuhi syarat ini, SecurityException akan muncul.
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
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 ActiveX dan penyambung tambahan
Unduhan
Pemrograman Skrip
Autentikasi Pengguna
Kumpulan fungsionalitas yang dapat diamankan dengan cara ini dikonfigurasi per zona untukInternet
Buka Panel Kontrol.
Klik Network dan Internet lalu klik Internet Options.
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.
Nota
Anda juga bisa masuk ke kotak dialog Opsi Internet dari Internet Explorer. Klik Tools lalu klik Opsi Internet.
Dimulai dengan Windows Internet Explorer 7, pengaturan keamanan berikut khusus untuk .NET Framework disertakan:
Loose XAML. 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, pengaturan ini semua 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. |
LooseXamlTidakDiizinkan | REG_DWORD | 1 untuk melarang; 0 untuk memungkinkan. |
LaranganPerambanWeb | 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. |
MediaVideoTidakDiperbolehkan | REG_DWORD | 1 untuk melarang; 0 untuk memungkinkan. |
ScriptInteropDisallow | REG_DWORD | 1 untuk melarang; 0 untuk memungkinkan. |
Kontrol Peramban Web dan Kontrol Fitur
Kontrol WebBrowser WPF dapat digunakan untuk menghosting konten Web. Kontrol WPF WebBrowser membungkus kontrol ActiveX WebBrowser 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 kontrol WebBrowser. Untuk informasi selengkapnya tentang kontrol WebBrowser ActiveX, lihat Gambaran Umum dan Tutorial WebBrowser Control.
Nota
Bagian ini juga berlaku untuk kontrol Frame karena menggunakan WebBrowser untuk menavigasi ke konten HTML.
Jika kontrol WPF WebBrowser digunakan untuk menghosting konten Web yang tidak tepercaya, aplikasi Anda harus menggunakan AppDomain kepercayaan 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 metode InvokeScript dan properti ObjectForScripting. Untuk informasi selengkapnya, lihat gambaran umum Add-Ins 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 tambahan adalah penambahan pada Internet Explorer yang memungkinkan administrator dan pengembang mengonfigurasi fitur Internet Explorer dan aplikasi yang menghosting kontrol WebBrowser ActiveX, yang dibungkus oleh kontrol WPF WebBrowser. Kontrol fitur dapat dikonfigurasi dengan menggunakan fungsi CoInternetSetFeatureEnabled atau dengan mengubah nilai-nilai dalam registry. 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 |
---|
Penanganan MIMEfitur |
FEATURE_MIME_SNIFFING |
FITUR PENYIMPANAN OBJEK |
FEATURE_SAFE_BINDTOOBJECT |
PEMBATASAN_JENDELA_FITUR |
FITUR_ZONA_ELEVASI |
FITUR_SESUAIKAN_UNDUGAN FILE |
FITUR_BATASI_PEMASANGAN_ACTIVEX |
FEATURE_ADDON_MANAGEMENT |
NONAKTIFKAN_NAMA_PENGGUNA_KATA_SANDI_HTTP |
Fitur_PitaKeamanan |
Pemeriksaan File Tersimpan UNC Fitur |
FITUR_VALIDASI_NAVIGASI_URL |
Fitur Menonaktifkan Protokol Telnet |
FEATURE_WEBOC_POPUPMANAGEMENT |
FITUR_NONAKTIFKAN_KOMPRESI_LEGACY |
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 memulai instansiasi 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.
Nota
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.
Pengaturan 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 |
FITUR_TAMPILKAN_DIALOG_PERINGATAN_PROTOKOL_APLIKASI |
FEATURE_LOCALMACHINE_LOCKDOWN |
FEATURE_FORCE_ADDR_AND_STATUS |
FITUR_ZONA_TERBATAS_SAAT_BERKAS_TIDAK_DITEMUKAN |
Untuk executable Anda, pertimbangkan untuk menonaktifkan kontrol fitur berikut dengan mengatur nilai registri ke 0.
Pengendalian Fitur |
---|
Fitur_Mengaktifkan_Tempelan_Skrip_URLAKSI_JIKA_DIMINTA |
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.
Nota
Jika Anda mencoba menjalankan XBAP yang menyertakan kontrol WebBrowser WPF di Firefox, saat berada di zona Internet, maka SecurityException akan muncul. 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 mencopot pemasangan assembly, meskipun hal itu dapat merusak aplikasi klien lainnya yang sepenuhnya tepercaya yang menggunakan assembly tersebut.
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 perakitan 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 diaktifkan.
Jika rakitan harus dinonaktifkan untuk aplikasi klien yang tepercaya sebagian, Anda dapat menulis pembaruan yang membuat kunci dan nilai registri.
Nota
Rakitan Core .NET Framework tidak terpengaruh dengan menonaktifkannya dengan cara ini karena diperlukan untuk menjalankan aplikasi terkelola. Dukungan untuk menonaktifkan rakitan APTCA terutama ditujukan pada aplikasi pihak ketiga.
Perilaku Mode Sandbox untuk File XAML Longgar
File XAML tanpa pengikat adalah file XAML khusus markup yang tidak bergantung pada kode pendukung, pengelola kejadian, atau perakitan 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 Frame dan NavigationWindow dapat dikonfigurasi untuk mengisolasinya saat dinavigasi. Isolasi dicapai dengan mengatur properti
<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.
Nota
Meskipun navigasi ke file XAML terpisah dari NavigationWindow atau Frame dalam aplikasi berdiri sendiri diimplementasikan berdasarkan infrastruktur hosting browser WPF, yang melibatkan proses PresentationHost, tingkat keamanannya sedikit lebih rendah daripada ketika konten dimuat langsung di Internet Explorer di Windows Vista dan Windows 7 (yang tetap 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:
Daerah | 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
- Keamanan Kepercayaan Parsial WPF
- Strategi Keamanan WPF - Keamanan Platform
- Strategi Keamanan WPF - Rekayasa Keamanan
- Panduan Keamanan Pola dan Praktik untuk Aplikasi
- Keamanan Akses Kode
- Keamanan dan Penyebaran ClickOnce
- XAML dalam WPF
.NET Desktop feedback