Bagikan melalui


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

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:

Hubungan antara navigasi aplikasi dan navigasi browser.

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 WinINet atau URLMon API , 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 ActiveX dan penyambung tambahan

  • Unduhan

  • Pemrograman Skrip

  • Autentikasi Pengguna

Kumpulan fungsionalitas yang dapat diamankan dengan cara ini dikonfigurasi per zona untukInternet , Intranet, Situs Tepercaya, dan zona Situs Terbatas . Langkah-langkah berikut menjelaskan cara mengonfigurasi pengaturan keamanan Anda:

  1. Buka Panel Kontrol.

  2. Klik Network dan Internet lalu klik Internet Options.

    Kotak dialog Opsi Internet muncul.

  3. Pada tab Keamanan , pilih zona untuk mengonfigurasi pengaturan keamanan.

  4. Klik tombol Tingkat Kustom.

    Kotak dialog Pengaturan Keamanan muncul dan Anda dapat mengonfigurasi pengaturan keamanan untuk zona yang dipilih.

    Cuplikan layar yang memperlihatkan kotak dialog Pengaturan Keamanan.

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.

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 SandboxExternalContent ke true, seperti yang ditunjukkan dalam contoh berikut untuk dan :

<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