Bagikan melalui


Pertimbangan Keamanan Tambahan dalam Formulir Windows

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 mencetak di lingkungan kepercayaan parsial, lihat Pencetakan Aman Lainnya 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 terkait UIPermissionClipboard 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 tempel, seperti kotak teks, dapat menerima data Clipboard, tetapi kontrol pengguna tidak dapat dibaca secara terprogram dari Clipboard.
NoClipboard Papan klip tidak dapat digunakan.

Secara default, zona Intranet Lokal menerima AllClipboard akses dan zona Internet menerima OwnClipboard akses. 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 meningkatkan izin, lihat Administrasi Kebijakan Keamanan Umum.

Manipulasi Jendela

Kelas ini UIPermission juga mengontrol izin untuk melakukan manipulasi jendela dan tindakan terkait UI lainnya, dan nilai enumerasi terkait UIPermissionWindow menunjukkan tingkat akses. Tabel berikut ini memperlihatkan kemungkinan tingkat izin.

Secara default, zona Intranet Lokal menerima AllWindows akses dan zona Internet menerima SafeTopLevelWindows akses. 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 peristiwa input windows dan 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 ToolTip kontrol,
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 antarmuka pengguna atau jendela apa pun. Tidak ada antarmuka pengguna yang dapat digunakan.

Setiap tingkat izin yang UIPermissionWindow diidentifikasi oleh enumerasi memungkinkan lebih sedikit tindakan daripada tingkat di atasnya. Tabel berikut menunjukkan tindakan yang dibatasi oleh SafeTopLevelWindows nilai 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 SafeTopLevelCaptionFormat properti.
Control - Mendapatkan Parent properti.
- Mengatur Region properti.
- Memanggil FindForm metode , , FocusFromChildHandle dan FromHandle, PreProcessMessage, ReflectMessage, atau SetTopLevel .
- Memanggil GetChildAtPoint metode jika kontrol yang dikembalikan bukan anak dari kontrol panggilan.
- Ubah fokus kontrol di dalam kontrol kontainer.
Cursor - Mengatur Clip properti.
- Memanggil Hide metode .
DataGrid - Memanggil ProcessTabKey metode .
Form - Mendapatkan ActiveForm properti atau MdiParent .
- Mengatur ControlBoxproperti , ShowInTaskbar, atau TopMost .
- Mengatur properti di Opacity bawah 50%.
- Mengatur WindowState properti ke Minimized secara terprogram.
- Memanggil Activate metode .
- Menggunakan Nonenilai enumerasi , FixedToolWindow, dan SizableToolWindowFormBorderStyle .
NotifyIcon - Menggunakan NotifyIcon komponen sepenuhnya dibatasi.

Nilai SafeSubWindows membatasi tindakan yang tercantum dalam tabel berikut, selain pembatasan yang ditempatkan oleh SafeTopLevelWindows nilai .

Komponen Tindakan terbatas
CommonDialog - Menampilkan kotak dialog yang berasal dari CommonDialog kelas .
Control - Memanggil CreateGraphics metode .
- Mengatur Cursor properti.
Cursor - Mengatur Current properti.
MessageBox - Memanggil Show metode .

Hosting Kontrol Pihak Ketiga

Jenis manipulasi jendela lain dapat terjadi jika formulir Anda menghosting kontrol pihak ketiga. Kontrol pihak ketiga adalah kustom UserControl apa pun yang belum Anda kembangkan dan 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 menimbuhkan kotak dialog penting, 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 sumber cocok dengan assembly.

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 UnmanagedCode nilai SecurityPermissionFlag akses kontrol enumerasi ke kode yang tidak dikelola. Aplikasi hanya dapat mengakses kode yang tidak dikelola saat diberikan UnmanagedCode izin. Secara default, hanya aplikasi yang berjalan secara lokal yang dapat memanggil kode yang tidak dikelola.

Beberapa anggota Formulir Windows menyediakan akses tidak terkelola yang memerlukan UnmanagedCode izin. Tabel berikut mencantumkan anggota di System.Windows.Forms namespace layanan 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 - Exit
metode - 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 - NativeWindow kelas
Screen metode - FromHandle
SendKeys metode - Send
metode - SendWait

Jika aplikasi Anda tidak memiliki izin untuk memanggil kode yang tidak dikelola, aplikasi Anda harus meminta UnmanagedCode izin, atau Anda harus mempertimbangkan cara alternatif untuk menerapkan fitur; dalam banyak kasus, Formulir Windows 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 meningkatkan izin, lihat Administrasi Kebijakan Keamanan Umum.

Baca juga