Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Sementara Windows Presentation Foundation (WPF) menyediakan berbagai layanan keamanan, ia juga memanfaatkan fitur keamanan platform yang mendasar, yang mencakup sistem operasi, CLR, dan Internet Explorer. Lapisan-lapisan ini bergabung untuk memberikan WPF model keamanan berlapis yang kuat yang mencoba menghindari satu titik kegagalan, seperti ditunjukkan pada gambar berikut:
diagram 
Sisa topik ini membahas fitur di masing-masing lapisan ini yang berkaitan dengan WPF secara khusus.
Peringatan
Keamanan Akses Kode (CAS) tidak didukung oleh .NET modern, ini adalah konsep .NET Framework-only. Semua fungsi terkait CAS diperlakukan dengan asumsi kepercayaan penuh. Untuk informasi selengkapnya, lihat Perbedaan dengan WPF .NET - Keamanan Akses Kode.
Keamanan Sistem Operasi
Inti Windows menyediakan beberapa fitur keamanan yang membentuk fondasi keamanan untuk semua aplikasi Windows, termasuk yang dibangun dengan WPF. Topik ini membahas luasnya fitur keamanan ini yang penting bagi WPF, serta bagaimana WPF terintegrasi dengan mereka untuk memberikan pertahanan lebih mendalam.
Microsoft Windows XP Service Pack 2 (SP2)
Selain tinjauan umum dan penguatan Windows, ada tiga fitur utama dari Windows XP SP2 yang akan kita bahas dalam topik ini:
Kompilasi /GS
Microsoft Windows Update.
Kompilasi /GS
Windows XP SP2 memberikan perlindungan dengan menyusun ulang banyak pustaka sistem inti, termasuk semua ketergantungan WPF seperti CLR, untuk membantu mengurangi kelebihan buffer. Ini dicapai dengan menggunakan parameter /GS dengan pengkompilasi baris perintah C/C++. Meskipun buffer overrun harus dihindari secara eksplisit, kompilasi /GS memberikan contoh pertahanan secara mendalam terhadap potensi kerentanan yang secara tidak sengaja atau dengan niat jahat dibuat oleh buffer overrun.
Secara historis, overruns buffer telah menjadi penyebab banyak eksploitasi keamanan berdampak tinggi. Kelebihan muatan buffer terjadi ketika penyerang memanfaatkan kelemahan kode yang memungkinkan penyuntikan kode berbahaya yang menulis melewati batas buffer. Ini kemudian memungkinkan penyerang untuk membajak prosedur di mana kode dijalankan dengan menimpa alamat pengembalian fungsi untuk menjalankan kode milik penyerang. Hasilnya adalah kode berbahaya yang menjalankan kode arbitrer dengan hak istimewa yang sama dengan proses yang dibajak.
Pada tingkat tinggi, flag kompilator -GS melindungi dari beberapa potensi penggunaan berlebih buffer dengan menyuntikkan cookie keamanan khusus untuk melindungi alamat pengembalian dari fungsi yang memiliki buffer string lokal. Setelah fungsi kembali, cookie keamanan dibandingkan dengan nilai sebelumnya. Jika nilai telah berubah, overrun buffer mungkin telah terjadi dan proses dihentikan dengan kondisi kesalahan. Menghentikan proses mencegah eksekusi kode yang berpotensi berbahaya. Lihat -GS (Pemeriksaan Keamanan Buffer) untuk detail selengkapnya.
WPF dikompilasi dengan bendera /GS untuk menambahkan lapisan pertahanan lain ke aplikasi WPF.
Windows Vista
Pengguna WPF di Windows Vista akan mendapat manfaat dari peningkatan keamanan tambahan sistem operasi, termasuk "Least-Privilege Akses Pengguna", pemeriksaan integritas kode, dan isolasi hak istimewa.
Kontrol Akun Pengguna (UAC)
Saat ini, pengguna Windows cenderung berjalan dengan hak istimewa administrator karena banyak aplikasi mengharuskan mereka untuk penginstalan atau eksekusi, atau keduanya. Mampu menulis pengaturan aplikasi default ke Registri adalah salah satu contohnya.
Berjalan dengan hak istimewa administrator benar-benar berarti bahwa aplikasi dijalankan dari proses yang diberikan hak istimewa administrator. Dampak keamanan dari ini adalah bahwa setiap kode berbahaya yang membajak proses yang berjalan dengan hak istimewa administrator akan secara otomatis mewarisi hak istimewa tersebut, termasuk akses ke sumber daya sistem penting.
Salah satu cara untuk melindungi dari ancaman keamanan ini adalah dengan menjalankan aplikasi dengan jumlah hak istimewa paling sedikit yang diperlukan. Ini dikenal sebagai prinsip hak istimewa paling sedikit, dan merupakan fitur inti dari sistem operasi Windows. Fitur ini disebut Kontrol Akun Pengguna (UAC), dan digunakan oleh Windows UAC dengan dua cara utama:
Untuk menjalankan sebagian besar aplikasi dengan hak istimewa UAC secara default, bahkan jika pengguna adalah administrator; hanya aplikasi yang membutuhkan hak istimewa administrator yang akan berjalan dengan hak istimewa administrator. Untuk berjalan dengan hak istimewa administratif, aplikasi harus secara eksplisit ditandai dalam manifes aplikasi mereka atau sebagai entri dalam kebijakan keamanan.
Untuk memberikan solusi kompatibilitas seperti virtualisasi. Misalnya, banyak aplikasi mencoba menulis ke lokasi terbatas seperti C:\Program Files. Untuk aplikasi yang dijalankan di bawah UAC, ada lokasi per pengguna alternatif yang tidak memerlukan hak istimewa administrator untuk menulis. Untuk aplikasi yang berjalan di bawah UAC, UAC memvirtualisasikan C:\Program Files sehingga aplikasi yang mengira mereka menulis ke direktori tersebut sebenarnya menulis ke lokasi alternatif per pengguna. Pekerjaan kompatibilitas semacam ini memungkinkan sistem operasi untuk menjalankan banyak aplikasi yang sebelumnya tidak dapat berjalan di UAC.
Pemeriksaan Integritas Kode
Windows Vista menggabungkan pemeriksaan integritas kode yang lebih dalam untuk membantu mencegah kode berbahaya dimasukkan ke dalam file sistem atau ke kernel pada waktu pemuatan/eksekusi. Ini melampaui perlindungan file sistem.
Proses Hak Terbatas untuk Aplikasi Browser-Hosted
Aplikasi WPF yang dihosting browser beroperasi di dalam batas aman zona Internet. Integrasi WPF dengan Microsoft Internet Explorer memperluas perlindungan ini dengan dukungan tambahan.
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).
Karena aplikasi browser XAML (XBAP) umumnya dibatasi oleh kumpulan izin zona Internet, menghapus hak istimewa ini tidak membahayakan aplikasi browser XAML (XBAP) dalam hal kompatibilitas. Sebagai gantinya, lapisan pertahanan mendalam tambahan dibuat; jika aplikasi yang di-sandbox dapat mengeksploitasi lapisan lain dan membajak proses, prosesnya akan tetap hanya memiliki hak istimewa terbatas.
Lihat Menggunakan Akun Pengguna Least-Privileged.
Keamanan Common Language Runtime
Waktu proses bahasa umum (CLR) menawarkan sejumlah manfaat keamanan utama yang mencakup validasi dan verifikasi, Code Access Security (CAS), dan Metodologi Keamanan yang Kritis.
Validasi dan Verifikasi
Untuk memberikan isolasi dan integritas perakitan, CLR menggunakan proses validasi. Validasi CLR memastikan bahwa rakitan diisolasi dengan memvalidasi format file Portable Executable (PE) mereka untuk alamat yang menunjuk ke luar rakitan. Validasi CLR juga memvalidasi integritas metadata yang disematkan dalam rakitan.
Untuk memastikan keamanan tipe, membantu mencegah masalah keamanan umum seperti kelebihan buffer, serta memungkinkan sandboxing melalui isolasi sub-proses, keamanan CLR menggunakan konsep verifikasi.
Aplikasi terkelola dikompilasi ke dalam Microsoft Intermediate Language (MSIL). Ketika metode dalam aplikasi terkelola dijalankan, MSIL-nya dikompilasi ke dalam kode asli melalui kompilasi Just-In-Time (JIT). Kompilasi JIT mencakup proses verifikasi yang menerapkan banyak aturan keamanan dan ketahanan yang memastikan kode tidak:
Melanggar kontrak tipe
Memperkenalkan kelebihan buffer
Mengakses memori secara sembarangan.
Kode terkelola yang tidak sesuai dengan aturan verifikasi tidak diizinkan untuk dijalankan, kecuali jika dianggap sebagai kode tepercaya.
Keuntungan dari kode yang dapat diverifikasi adalah alasan utama mengapa WPF dibangun pada .NET Framework. Sejauh kode yang dapat diverifikasi digunakan, kemungkinan mengeksploitasi kemungkinan kerentanan sangat diturunkan.
Keamanan Akses Kode
Komputer klien mengekspos berbagai sumber daya yang dapat diakses oleh aplikasi terkelola, termasuk sistem file, Registri, layanan pencetakan, antarmuka pengguna, refleksi, dan variabel lingkungan. Sebelum aplikasi terkelola dapat mengakses salah satu sumber daya pada komputer klien, aplikasi harus memiliki izin .NET Framework untuk melakukannya. Izin dalam CAS adalah subkelas dari CodeAccessPermission; CAS menerapkan satu subkelas untuk setiap sumber daya yang dapat diakses aplikasi terkelola.
Sekumpulan izin yang diberikan oleh APLIKASI terkelola oleh CAS ketika mulai dieksekusi dikenal sebagai set izin dan ditentukan oleh bukti yang disediakan oleh aplikasi. Untuk aplikasi WPF, bukti yang disediakan adalah lokasi, atau zona, tempat aplikasi diluncurkan. CAS mengidentifikasi zona berikut:
Komputer Saya. Aplikasi yang diluncurkan dari komputer klien (Sepenuhnya Tepercaya).
Intranet Lokal. Aplikasi yang diluncurkan dari intranet. (Agak Tepercaya).
Internet. Aplikasi yang diluncurkan dari Internet. (Paling Tidak Tepercaya).
Situs Tepercaya. Aplikasi yang diidentifikasi oleh pengguna sebagai tepercaya. (Paling Tidak Tepercaya).
Situs Tidak Tepercaya. Aplikasi yang diidentifikasi oleh pengguna sebagai tidak tepercaya. (Tidak tepercaya).
Untuk masing-masing zona ini, CAS menyediakan set izin yang telah ditentukan sebelumnya yang mencakup izin yang cocok dengan tingkat kepercayaan yang terkait dengan masing-masing. Ini termasuk:
KepercayaanPenuh. Untuk aplikasi yang diluncurkan dari zona Komputer Saya. Semua izin yang mungkin sudah diberikan.
LocalIntranet . Untuk aplikasi yang diluncurkan dari zona Intranet Lokal
. Subset izin diberikan untuk menyediakan akses moderat ke sumber daya komputer klien, termasuk penyimpanan terisolasi, akses UI yang tidak dibatasi, dialog file yang tidak dibatasi, refleksi terbatas, akses terbatas ke variabel lingkungan. Izin untuk sumber daya penting seperti Registri tidak disediakan. Internet. Untuk aplikasi yang diluncurkan dari zona Internet atau Situs Tepercaya . Subset izin diberikan untuk menyediakan akses terbatas ke sumber daya komputer klien, termasuk penyimpanan terisolasi, hanya buka file, dan UI terbatas. Pada dasarnya, set izin ini mengisolasi aplikasi dari komputer klien.
Aplikasi yang diidentifikasi berasal dari zona Situs Tidak Tepercaya
Gambar berikut mengilustrasikan hubungan antara zona, setel izin, izin, dan sumber daya.
diagram 
Pembatasan zona kotak pasir keamanan Internet berlaku sama untuk setiap kode yang diimpor XBAP dari pustaka sistem, termasuk WPF. Ini memastikan bahwa setiap bit kode dikunci, bahkan WPF. Sayangnya, untuk dapat mengeksekusi, XBAP perlu menjalankan fungsionalitas yang memerlukan lebih banyak izin daripada yang diaktifkan oleh kotak pasir keamanan zona Internet.
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).
Pertimbangkan aplikasi XBAP yang menyertakan halaman berikut:
FileIOPermission fp = new FileIOPermission(PermissionState.Unrestricted);
fp.Assert();
// Perform operation that uses the assert
// Revert the assert when operation is completed
CodeAccessPermission.RevertAssert();
Dim fp As New FileIOPermission(PermissionState.Unrestricted)
fp.Assert()
' Perform operation that uses the assert
' Revert the assert when operation is completed
CodeAccessPermission.RevertAssert()
Untuk menjalankan XBAP ini, kode WPF yang mendasar harus menjalankan fungsionalitas yang lebih banyak daripada yang tersedia pada XBAP pemanggil, termasuk:
Membuat handle jendela (HWND) untuk rendering
Mengirim pesan
Memuat font Tahoma
Dari sudut pandang keamanan, memungkinkan akses langsung terhadap operasi-operasi ini dari aplikasi sandbox akan menjadi bencana.
Untungnya, WPF memenuhi situasi ini dengan memungkinkan operasi-operasi ini dijalankan dengan hak istimewa yang ditingkatkan demi aplikasi dalam mode sandbox. Sementara semua operasi WPF diperiksa terhadap izin keamanan zona Internet terbatas dari domain aplikasi XBAP, WPF (seperti halnya pustaka sistem lainnya) diberikan set izin yang mencakup semua izin yang mungkin.
Ini mengharuskan WPF menerima hak istimewa yang ditinggikan sambil mencegah hak istimewa tersebut diatur oleh kumpulan izin zona Internet dari domain aplikasi host.
WPF melakukan ini dengan menggunakan metode Assert pada izin. Kode berikut menunjukkan bagaimana hal ini terjadi.
FileIOPermission fp = new FileIOPermission(PermissionState.Unrestricted);
fp.Assert();
// Perform operation that uses the assert
// Revert the assert when operation is completed
CodeAccessPermission.RevertAssert();
Dim fp As New FileIOPermission(PermissionState.Unrestricted)
fp.Assert()
' Perform operation that uses the assert
' Revert the assert when operation is completed
CodeAccessPermission.RevertAssert()
Assert pada dasarnya mencegah izin tidak terbatas yang diperlukan oleh WPF agar tidak dibatasi oleh izin zona Internet XBAP.
Dari perspektif platform, WPF bertanggung jawab untuk menggunakan Assert dengan benar; penggunaan Assert yang salah dapat memungkinkan kode berbahaya untuk meningkatkan hak istimewa. Akibatnya, penting untuk hanya memanggil Assert sesuai kebutuhan, dan memastikan bahwa pembatasan sandbox tetap utuh. Misalnya, kode yang terisolasi tidak diizinkan untuk membuka file acak, tetapi diizinkan untuk menggunakan font. WPF memungkinkan aplikasi dalam kotak pasir untuk menggunakan fungsionalitas font dengan menggunakan Assert, serta memungkinkan WPF untuk membaca file yang diketahui berisi font tersebut atas nama aplikasi dalam kotak pasir.
Penyebaran ClickOnce
ClickOnce adalah teknologi penyebaran komprehensif yang disertakan dengan .NET Framework dan terintegrasi dengan Visual Studio (lihat keamanan dan penyebaran ClickOnce untuk informasi terperinci). Aplikasi WPF mandiri dapat disebarkan menggunakan ClickOnce, sementara aplikasi yang dihosting browser harus disebarkan dengan ClickOnce.
Aplikasi yang disebarkan menggunakan ClickOnce diberi lapisan keamanan tambahan melalui Code Access Security (CAS); pada dasarnya, aplikasi yang disebarkan ClickOnce meminta izin yang mereka butuhkan. Mereka hanya diberikan izin tersebut jika tidak melebihi serangkaian izin untuk zona tempat aplikasi disebarkan. Dengan mengurangi sekumpulan izin hanya untuk yang diperlukan, bahkan jika kurang dari yang disediakan oleh set izin zona peluncuran, jumlah sumber daya yang dapat diakses aplikasi dikurangi menjadi minimum. Akibatnya, jika aplikasi dibajak, potensi kerusakan pada komputer klien berkurang.
Metodologi Security-Critical
Kode WPF yang menggunakan izin untuk mengaktifkan kotak pasir zona Internet untuk aplikasi XBAP harus memenuhi audit dan kontrol keamanan tingkat setinggi mungkin. Untuk memfasilitasi persyaratan ini, .NET Framework menyediakan dukungan baru untuk mengelola kode yang meningkatkan hak istimewa. Secara khusus, CLR memungkinkan Anda mengidentifikasi kode yang meningkatkan hak istimewa dan menandainya dengan SecurityCriticalAttribute; kode apa pun yang tidak ditandai dengan SecurityCriticalAttribute menjadi transparan menggunakan metodologi ini. Sebaliknya, kode terkelola yang tidak ditandai dengan SecurityCriticalAttribute dilarang meningkatkan hak istimewa.
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).
Metodologi Security-Critical memungkinkan pengorganisasian kode WPF yang meningkatkan hak akses ke dalam kernel inti keamanan , sedangkan bagian sisanya tetap transparan. Mengisolasi kode keamanan-kritis memungkinkan tim teknik WPF memfokuskan analisis keamanan tambahan dan kontrol sumber pada kernel kritis keamanan di atas dan di luar praktik keamanan standar (lihat Strategi Keamanan WPF - Teknik Keamanan).
Perhatikan bahwa .NET Framework mengizinkan kode tepercaya untuk memperluas kotak pasir zona Internet XBAP dengan memungkinkan pengembang menulis rakitan terkelola yang ditandai dengan AllowPartiallyTrustedCallersAttribute (APTCA) dan disebarkan ke Global Assembly Cache (GAC) pengguna. Menandai rakitan dengan APTCA adalah operasi keamanan yang sangat sensitif karena memungkinkan kode apa pun untuk memanggil rakitan tersebut, termasuk kode berbahaya dari Internet. Peringatan ekstrem dan praktik terbaik harus digunakan saat melakukan ini dan pengguna harus memilih untuk mempercayai perangkat lunak tersebut agar dapat diinstal.
Keamanan Microsoft Internet Explorer
Selain mengurangi masalah keamanan dan menyederhanakan konfigurasi keamanan, Microsoft Internet Explorer 6 (SP2) berisi beberapa fitur yang meningkatkan keamanan untuk pengguna aplikasi browser XAML (XBAP). Fokus dari fitur-fitur ini adalah memberikan pengguna kendali lebih besar atas pengalaman penjelajahan mereka.
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).
Sebelum IE6 SP2, pengguna dapat tunduk pada salah satu hal berikut:
Jendela munculan acak.
Pengalihan skrip yang membingungkan.
Banyak dialog keamanan pada beberapa situs Web.
Dalam beberapa kasus, situs Web yang tidak dapat dipercaya akan mencoba mengelabui pengguna dengan melakukan spoofing antarmuka pengguna penginstalan (UI) atau berulang kali menampilkan kotak dialog penginstalan Microsoft ActiveX, meskipun pengguna mungkin telah membatalkannya. Dengan menggunakan teknik ini, ada kemungkinan bahwa sejumlah besar pengguna telah ditipu untuk membuat keputusan buruk yang dihasilkan dengan penginstalan aplikasi spyware.
IE6 SP2 mencakup beberapa fitur untuk mengurangi jenis masalah ini, yang berputar di sekitar konsep inisiasi pengguna. IE6 SP2 mendeteksi kapan pengguna telah mengklik elemen tautan atau halaman sebelum tindakan, yang dikenal sebagai inisiasi pengguna , dan memperlakukannya secara berbeda dari ketika tindakan serupa dipicu oleh skrip pada halaman. Sebagai contoh, IE6 SP2 menggabungkan Pop-Up Blocker yang mendeteksi kapan pengguna mengklik tombol sebelum halaman membuat pop-up. Ini memungkinkan IE6 SP2 untuk memungkinkan sebagian besar pop-up yang tidak berbahaya sekaligus mencegah pop-up yang tidak diminta pengguna atau tidak diinginkan. Pop-up yang diblokir terperangkap di bawah Bilah Informasi yang baru, yang memungkinkan pengguna untuk membatalkan blok secara manual dan melihat pop-up.
Logika inisiasi pengguna yang sama juga diterapkan ke Buka/Simpan permintaan keamanan. Kotak dialog penginstalan ActiveX selalu terperangkap di bawah Bilah Informasi kecuali jika mewakili peningkatan dari kontrol yang diinstal sebelumnya. Langkah-langkah ini digabungkan untuk memberi pengguna pengalaman pengguna yang lebih aman dan lebih terkontrol karena mereka dilindungi terhadap situs yang melecehkan mereka untuk menginstal perangkat lunak yang tidak diinginkan atau berbahaya.
Fitur-fitur ini juga melindungi pelanggan yang menggunakan IE6 SP2 untuk menelusuri situs web yang memungkinkan mereka mengunduh dan menginstal aplikasi WPF. Secara khusus, ini karena IE6 SP2 menawarkan pengalaman pengguna yang lebih baik yang mengurangi kesempatan bagi pengguna untuk menginstal aplikasi berbahaya atau berbahaya terlepas dari teknologi apa yang digunakan untuk membangunnya, termasuk WPF. WPF menambahkan perlindungan ini dengan menggunakan ClickOnce untuk memfasilitasi pengunduhan aplikasinya melalui Internet. Karena aplikasi browser XAML (XBAP) dijalankan dalam kotak pasir keamanan zona Internet, aplikasi tersebut dapat diluncurkan dengan mulus. Di sisi lain, aplikasi WPF mandiri memerlukan kepercayaan penuh untuk dijalankan. Untuk aplikasi ini, ClickOnce akan menampilkan kotak dialog keamanan selama proses peluncuran untuk memberi tahu penggunaan persyaratan keamanan tambahan aplikasi. Namun, ini harus diinisiasi oleh pengguna, juga akan diatur oleh logika yang diinisiasi oleh pengguna, dan dapat dibatalkan.
Internet Explorer 7 menggabungkan dan memperluas kemampuan keamanan IE6 SP2 sebagai bagian dari komitmen berkelanjutan terhadap keamanan.
Lihat juga
- Keamanan Akses Kode
- Keamanan
- Keamanan Kepercayaan Parsial WPF
- Strategi Keamanan WPF - Rekayasa Keamanan
.NET Desktop feedback