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.
Penting
Konten ini hanya berlaku untuk .NET Framework kecuali ditentukan lain.
Pengaturan keamanan .NET Framework dapat menyebabkan aplikasi Anda berjalan secara berbeda di lingkungan kepercayaan parsial daripada di komputer lokal Anda. .NET Framework membatasi akses ke sumber daya lokal penting seperti sistem file, jaringan, dan API yang tidak dikelola, antara lain. Pengaturan keamanan memengaruhi kemampuan untuk memanggil Api Microsoft Windows atau API lain yang tidak dapat diverifikasi oleh sistem keamanan. Keamanan juga memengaruhi aspek lain dari aplikasi Anda, termasuk akses file dan data, dan pencetakan. Untuk informasi selengkapnya tentang akses file dan data di lingkungan kepercayaan parsial, lihat Akses File dan Data yang Lebih Aman di Formulir Windows. Untuk informasi selengkapnya tentang pencetakan di lingkungan kepercayaan parsial, lihat Pencetakan Yang Lebih Aman di Formulir Windows.
Bagian berikut membahas cara bekerja dengan Clipboard, melakukan manipulasi jendela, dan memanggil WINDOWS API dari aplikasi yang berjalan di lingkungan kepercayaan parsial.
Akses Clipboard
Kelas UIPermission mengontrol akses ke Clipboard, dan nilai enumerasi UIPermissionClipboard terkait menunjukkan tingkat akses. Tabel berikut ini memperlihatkan kemungkinan tingkat izin.
| Nilai UIPermissionClipboard | Deskripsi |
|---|---|
| AllClipboard | Clipboard dapat digunakan tanpa batasan. |
| OwnClipboard | Clipboard dapat digunakan dengan beberapa batasan. Kemampuan untuk menempatkan data pada Clipboard (operasi perintah Salin atau Potong) tidak dibatasi. Kontrol intrinsik yang menerima penempelan, seperti kotak teks, dapat menerima data Clipboard, tetapi kontrol pengguna tidak dapat membaca dari Clipboard dengan cara pemrograman. |
| NoClipboard | Papan klip tidak dapat digunakan. |
Secara default, zona Intranet Lokal menerima akses AllClipboard dan zona Internet menerima akses OwnClipboard. Ini berarti bahwa aplikasi dapat menyalin data ke Clipboard, tetapi aplikasi tidak dapat menempel atau membaca secara terprogram dari Clipboard. Pembatasan ini mencegah program tanpa kepercayaan penuh membaca konten yang disalin ke Clipboard oleh aplikasi lain. Jika aplikasi Anda memerlukan akses Clipboard penuh tetapi Anda tidak memiliki izin, Anda harus meningkatkan izin untuk aplikasi Anda. Untuk informasi selengkapnya tentang peningkatan izin, lihat Administrasi Kebijakan Keamanan Umum.
Manipulasi Jendela
Kelas UIPermission juga mengontrol izin untuk melakukan manipulasi jendela dan tindakan terkait UI lainnya, dan nilai enumerasi UIPermissionWindow terkait menunjukkan tingkat akses. Tabel berikut ini memperlihatkan kemungkinan tingkat izin.
Secara default, zona Intranet Lokal menerima akses AllWindows dan zona Internet menerima akses SafeTopLevelWindows. Ini berarti bahwa di zona Internet, aplikasi dapat melakukan sebagian besar tindakan windowing dan UI, tetapi tampilan jendela akan dimodifikasi. Jendela yang dimodifikasi menampilkan pemberitahuan balon saat pertama kali dijalankan, berisi teks bilah judul yang dimodifikasi, dan memerlukan tombol tutup pada bilah judul. Pemberitahuan balon dan bilah judul mengidentifikasi kepada pengguna aplikasi bahwa aplikasi berjalan di bawah kepercayaan parsial.
| Nilai UIPermissionWindow | Deskripsi |
|---|---|
| AllWindows | Pengguna dapat menggunakan semua jendela dan peristiwa input pengguna tanpa batasan. |
| SafeTopLevelWindows | Pengguna hanya dapat menggunakan jendela tingkat atas yang lebih aman dan subwindow yang lebih aman untuk menggambar, dan hanya dapat menggunakan peristiwa input pengguna untuk antarmuka pengguna dalam jendela dan subwindow tingkat atas tersebut. Jendela yang lebih aman ini diberi label dengan jelas dan memiliki batasan ukuran minimum dan maksimum. Pembatasan mencegah serangan spoofing yang berpotensi berbahaya, seperti meniru layar masuk sistem atau desktop sistem, dan membatasi akses terprogram ke jendela induk, API terkait fokus, dan penggunaan kontrol ToolTip, |
| SafeSubWindows | Pengguna hanya dapat menggunakan subwindow yang lebih aman untuk menggambar, dan hanya dapat menggunakan peristiwa input pengguna untuk antarmuka pengguna dalam subwindow tersebut. Kontrol yang ditampilkan dalam browser adalah contoh subwindow yang lebih aman. |
| NoWindows | Pengguna tidak dapat menggunakan peristiwa jendela atau antarmuka pengguna apa pun. Tidak ada antarmuka pengguna yang dapat digunakan. |
Setiap tingkat izin yang diidentifikasi oleh enumerasi UIPermissionWindow memungkinkan lebih sedikit tindakan daripada tingkat di atasnya. Tabel berikut menunjukkan tindakan yang dibatasi oleh nilai SafeTopLevelWindows dan SafeSubWindows. Untuk izin pasti yang diperlukan untuk setiap anggota, lihat referensi untuk anggota tersebut dalam dokumentasi pustaka kelas .NET Framework.
SafeTopLevelWindows izin membatasi tindakan yang tercantum dalam tabel berikut.
| Komponen | Tindakan terbatas |
|---|---|
| Application | - Mengatur properti SafeTopLevelCaptionFormat. |
| Control | - Mendapatkan properti Parent. - Mengatur properti Region.- Memanggil metode FindForm , Focus, FromChildHandle dan FromHandle, PreProcessMessage, ReflectMessage, atau SetTopLevel. - Memanggil metode GetChildAtPoint jika kontrol yang dikembalikan bukan anak dari kontrol yang memanggil. - Ubah fokus kontrol di dalam kontrol kontainer. |
| Cursor | - Mengatur properti Clip. - Memanggil metode Hide. |
| DataGrid | - Memanggil metode ProcessTabKey. |
| Form | - Mendapatkan properti ActiveForm atau MdiParent. - Mengatur properti ControlBox, ShowInTaskbar, atau TopMost. - Mengatur properti Opacity di bawah 50%. - Mengatur properti WindowState ke Minimized secara terprogram. - Memanggil metode Activate. - Menggunakan nilai enumerasi None, FixedToolWindow, dan SizableToolWindowFormBorderStyle. |
| NotifyIcon | - Penggunaan komponen NotifyIcon sepenuhnya dilarang. |
Nilai SafeSubWindows membatasi tindakan yang tercantum dalam tabel berikut, selain pembatasan yang ditempatkan oleh nilai SafeTopLevelWindows.
| Komponen | Tindakan terbatas |
|---|---|
| CommonDialog | - Menampilkan kotak dialog yang berasal dari kelas CommonDialog. |
| Control | - Memanggil metode CreateGraphics. - Mengatur properti Cursor. |
| Cursor | - Mengatur properti Current. |
| MessageBox | - Memanggil metode Show. |
Hosting Komponen Pihak Ketiga
Jenis manipulasi jendela lain dapat terjadi jika formulir Anda menghosting kontrol pihak ketiga. Kontrol pihak ketiga adalah kustom UserControl yang tidak Anda kembangkan maupun kompilasi sendiri. Meskipun skenario hosting sulit dieksploitasi, secara teoritis mungkin bagi kontrol pihak ketiga untuk memperluas permukaan penyajiannya untuk mencakup seluruh area formulir Anda. Kontrol ini kemudian dapat meniru kotak dialog kritis, dan meminta informasi seperti kombinasi nama pengguna/kata sandi atau nomor rekening bank dari pengguna Anda.
Untuk membatasi potensi risiko ini, gunakan kontrol pihak ketiga hanya dari vendor yang dapat Anda percayai. Jika Anda menggunakan kontrol pihak ketiga yang telah Anda unduh dari sumber yang tidak dapat diverifikasi, kami sarankan Anda meninjau kode sumber untuk potensi eksploitasi. Setelah memverifikasi bahwa sumbernya tidak berbahaya, Anda harus mengkompilasi rakitan sendiri untuk memastikan bahwa sumbernya sesuai dengan rakitan.
Panggilan Windows API
Jika desain aplikasi Anda memerlukan panggilan fungsi dari WINDOWS API, Anda mengakses kode yang tidak dikelola. Dalam hal ini tindakan kode ke jendela atau sistem operasi tidak dapat ditentukan ketika Anda bekerja dengan panggilan atau nilai Windows API. Kelas SecurityPermission dan nilai UnmanagedCode dari enumerasi SecurityPermissionFlag mengontrol akses ke kode unmanaged. Aplikasi hanya dapat mengakses kode yang tidak dikelola saat diberikan izin UnmanagedCode. Secara default, hanya aplikasi yang berjalan secara lokal yang dapat memanggil kode yang tidak dikelola.
Beberapa anggota Windows Forms menyediakan akses tidak terkelola yang memerlukan izin UnmanagedCode. Tabel berikut mencantumkan anggota di namespace System.Windows.Forms yang memerlukan izin. Untuk informasi selengkapnya tentang izin yang diperlukan untuk anggota, lihat dokumentasi pustaka kelas .NET Framework.
| Komponen | Anggota |
|---|---|
| Application | metode - AddMessageFilter properti - CurrentInputLanguage metode - Exitmetode - ExitThread peristiwa - ThreadException |
| CommonDialog | metode - HookProc - OwnerWndProc\ metode metode - Reset metode - RunDialog |
| Control | metode - CreateParams metode - DefWndProc metode - DestroyHandle metode - WndProc |
| Help | metode - ShowHelp metode - ShowHelpIndex |
| NativeWindow | kelas - NativeWindow |
| Screen | metode - FromHandle |
| SendKeys | metode - Send metode - SendWait |
Jika aplikasi Anda tidak memiliki izin untuk memanggil kode yang tidak dikelola, aplikasi Anda harus meminta izin UnmanagedCode, atau Anda harus mempertimbangkan cara alternatif untuk menerapkan fitur; dalam banyak kasus, Windows Forms menyediakan alternatif terkelola untuk fungsi Windows API. Jika tidak ada cara alternatif dan aplikasi harus mengakses kode yang tidak dikelola, Anda harus meningkatkan izin untuk aplikasi.
Izin untuk memanggil kode yang tidak dikelola memungkinkan aplikasi untuk melakukan apa pun. Oleh karena itu, izin untuk memanggil kode yang tidak dikelola hanya boleh diberikan untuk aplikasi yang berasal dari sumber tepercaya. Atau, tergantung pada aplikasi, bagian fungsionalitas aplikasi yang melakukan panggilan ke kode yang tidak dikelola bisa bersifat opsional, atau diaktifkan di lingkungan kepercayaan penuh saja. Untuk informasi selengkapnya tentang izin berbahaya, lihat Izin Berbahaya dan Administrasi Kebijakan. Untuk informasi selengkapnya tentang peningkatan izin, lihat Administrasi Kebijakan Keamanan Umum.
Lihat juga
.NET Desktop feedback