Pertimbangan Keamanan: Kontrol Microsoft Windows
Topik ini menyediakan informasi tentang pertimbangan keamanan yang terkait dengan kontrol Windows. Informasi dalam topik ini tidak menyediakan semua yang perlu Anda ketahui tentang masalah keamanan—gunakan sebagai titik awal dan referensi untuk area teknologi ini.
Interkonektivitas di antara komputer adalah umum; perhatian utama pengembang haruslah keamanan aplikasi. Bagian berikut membahas beberapa potensi masalah keamanan yang perlu dipertimbangkan saat memprogram kontrol Windows.
- Pesan Kontrol null-terminated
- Penggunaan String
- Validasi Input
- Penggunaan Kata Sandi
- Pemberitahuan Keamanan
- Topik terkait
Pesan Kontrol null-terminated
Banyak pesan kontrol dan makro memiliki parameter string. Seringkali pesan-pesan ini tidak memvalidasi string input, khususnya, mereka tidak memeriksa penghentian '\0'
. Saat Anda memanggil pesan yang menggunakan string sebagai parameter, tentukan secara eksplisit bahwa string dihentikan null.
Penggunaan String
Ketika Anda memprogram kontrol Windows, perlu untuk memanipulasi string. Hampir setiap kontrol mengharuskan teks disisipkan. Misalnya, untuk mengisi kotak daftar, Anda harus memuat string ke dalam kontrol. Karena menggunakan string salah sering menyebabkan overruns buffer, lakukan tindakan pencegahan untuk menghindari risiko keamanan ini.
Untuk informasi selengkapnya tentang overruns buffer, lihat Menulis Kode Aman oleh Michael Howard dan David LeBlanc, Microsoft Press, 2002 dan Praktik Terbaik untuk API Keamanan.
Validasi Input
Pesan kontrol berikut dapat menyajikan masalah keamanan.
- CB_GETLBTEXT
- LVM_GETISEARCHSTRING
- SB_GETTEXT
- SB_GETTIPTEXT
- TB_GETBUTTONTEXT
- TTM_GETTEXT
- TVM_GETISEARCHSTRING
Jika teks berubah antara panggilan untuk mendapatkan panjang teks dan waktu teks ditampilkan atau digunakan, overrun buffer dapat terjadi. Untuk menghindari hal ini, Anda harus memvalidasi string sebelum menggunakannya. Selain itu, pesan yang mengambil teks, CB_GETLBTEXT, TB_GETBUTTONTEXT, dan TTM_GETTEXT, tidak memiliki parameter ukuran buffer yang menyajikan potensi penyerbuan buffer.
Saat menggunakan CB_GETLBTEXT atau SB_GETTEXT, Anda harus terlebih dahulu memanggil CB_GETLBTEXTLEN atau SB_GETTEXTLENGTH untuk mendapatkan ukuran buffer. Beberapa pesan ini, TB_GETBUTTONTEXT, LVM_GETISEARCHSTRING, dan TVM_GETISEARCHSTRING, dapat dipanggil dengan nilai parameter NULL untuk mendapatkan panjang string sebelum memanggil pesan untuk mengambil string.
Pesan yang harus Anda perhatikan adalah bilah status SB_GETTIPTEXT pesan. Pesan ini tidak menyediakan cara untuk mengkueri panjang string yang akan diambil.
Penggunaan Kata Sandi
Jika Anda menggunakan kontrol edit yang dilindungi kata sandi (gaya ES_PASSWORD ), buffer yang berisi teks yang diambil harus diatur ke nol sesegera mungkin untuk menghindari mengekspos kata sandi pengguna dalam memori.
Pemberitahuan Keamanan
Tabel berikut mencantumkan fitur yang, jika salah digunakan, dapat membahayakan keamanan aplikasi Anda. Pesan yang tercantum di sini tidak menyediakan parameter yang menentukan ukuran buffer.
Fitur | Mitigasi |
---|---|
DlgDirListComboBox | Pastikan buffer yang digunakan oleh fungsi dapat ditulis dan dihentikan null. |
CB_GETLBTEXT | Panggil CB_GETLBTEXTLEN untuk mendapatkan ukuran buffer, lalu panggil CB_GETLBTEXT untuk mengambil string. |
LVM_GETISEARCHSTRING | Panggil pesan dengan nilai parameter NULL untuk mendapatkan ukuran buffer, lalu panggil pesan untuk kedua kalinya untuk mengambil string. |
SB_GETTEXT | Panggil SB_GETTEXTLENGTH untuk mendapatkan ukuran buffer, lalu panggil SB_GETTEXT untuk mengambil string. |
TB_GETBUTTONTEXT | Panggil pesan dengan nilai parameter NULL untuk mendapatkan ukuran buffer, lalu panggil pesan untuk kedua kalinya untuk mengambil string. |
TTM_GETTEXT | Pesan ini tidak menyediakan cara bagi Anda untuk mengetahui atau menentukan ukuran buffer. |
TVM_GETISEARCHSTRING | Panggil pesan dengan meneruskan nilai parameter NULL untuk mendapatkan ukuran buffer, lalu panggil pesan untuk kedua kalinya untuk mengambil string. |
Topik terkait
-
Sumber Daya Lainnya