Güvenlikle İlgili Dikkat Edilmesi Gerekenler: Microsoft Windows Denetimleri
Bu konu, Windows denetimleriyle ilgili güvenlik konuları hakkında bilgi sağlar. Bu konudaki bilgiler, güvenlik sorunları hakkında bilmeniz gereken her şeyi sağlamaz; bunu bu teknoloji alanı için bir başlangıç noktası ve başvuru olarak kullanın.
Bilgisayarlar arasındaki bağlantı yaygın olarak görülür; bir geliştiricinin en önemli endişesi uygulama güvenliği olmalıdır. Aşağıdaki bölümlerde Windows denetimlerini programlama sırasında dikkate alınması gereken bazı olası güvenlik sorunları açıklanmıştır.
- Null Sonlandırılan Denetim İletileri
- Dize kullanımı
- Giriş Doğrulama
- parola kullanımı
- Güvenlik Uyarıları
- İlgili konular
Null Sonlandırılan Denetim İletileri
Denetim iletilerinin ve makroların çoğunda dize parametreleri vardır. Bu iletiler genellikle giriş dizelerini doğrulamaz, özellikle de sonlandırıcı '\0'
olup olmadığını denetlemez. Parametre olarak dize kullanan bir iletiyi çağırdığınızda, dizenin null olarak sonlandırıldığını açıkça belirtin.
Dize Kullanımı
Windows denetimlerini programladığınızda, dizeleri işlemek gerekir. Neredeyse tüm denetimler metin eklenmesini gerektirir. Örneğin, bir liste kutusunu doldurmak için denetime dizeler yüklemeniz gerekir. Dizelerin yanlış kullanılması genellikle arabellek taşmalarına neden olduğundan, bu güvenlik riskini önlemek için önlemler alın.
Arabellek taşmalarıyla ilgili daha fazla bilgi için bkz. Writing Secure Code by Michael Howard and David LeBlanc, Microsoft Press, 2002 ve Best Practices for the Security API'leri.
Giriş Doğrulama
Aşağıdaki denetim iletileri güvenlik sorunları sunabilir.
- CB_GETLBTEXT
- LVM_GETISEARCHSTRING
- SB_GETTEXT
- SB_GETTIPTEXT
- TB_GETBUTTONTEXT
- TTM_GETTEXT
- TVM_GETISEARCHSTRING
Metin uzunluğu ve metnin görüntülendiği veya kullanıldığı saat için çağrı arasında metin değişirse, arabellek taşması oluşabilir. Bunu önlemek için, kullanmadan önce dizeyi doğrulamanız gerekir. Buna ek olarak, CB_GETLBTEXT, TB_GETBUTTONTEXTve TTM_GETTEXTmetinleri alan iletilerin arabellek taşması olasılığını gösteren arabellek boyutu parametresi yoktur.
CB_GETLBTEXT veya SB_GETTEXTkullandığınızda, arabellek boyutunu almak için önce CB_GETLBTEXTLEN veya SB_GETTEXTLENGTH çağırmalısınız. TB_GETBUTTONTEXT, LVM_GETISEARCHSTRINGve TVM_GETISEARCHSTRINGbu iletilerden bazıları, dizeyi almak için ileti çağrılmadan önce dizenin uzunluğunu elde etmek için NULL parametre değeriyle çağrılabilir.
Özellikle dikkat etmelisiniz bir ileti durum çubuğu SB_GETTIPTEXT iletidir. Bu ileti, alınacak dizenin uzunluğunu sorgulamak için hiçbir yol sağlamaz.
Parola Kullanımı
Parola korumalı düzenleme denetimleri (ES_PASSWORD stili) kullanıyorsanız, kullanıcının parolasının bellekte açığa çıkarılmasını önlemek için, alınan metni içeren arabellek en kısa sürede sıfır olarak ayarlanmalıdır.
Güvenlik Uyarıları
Aşağıdaki tabloda, yanlış kullanıldığında uygulamalarınızın güvenliğini tehlikeye atabilecek özellikler listelenmiştir. Burada listelenen iletiler arabellek boyutunu belirten bir parametre sağlamaz.
Özellik | Azaltma |
---|---|
DlgDirListComboBox | İşlev tarafından kullanılan arabelleğin yazılabilir ve null olarak sonlandırılabilir olduğundan emin olun. |
CB_GETLBTEXT | Arabelleğin boyutunu almak için CB_GETLBTEXTLEN çağırın ve ardından dizeyi almak için CB_GETLBTEXT çağırın. |
LVM_GETISEARCHSTRING | arabellek boyutunu almak için NULL parametre değeriyle iletiyi çağırın ve sonra dizeyi almak için iletiyi ikinci kez çağırın. |
SB_GETTEXT | Arabelleğin boyutunu almak için SB_GETTEXTLENGTH çağırın ve ardından dizeyi almak için SB_GETTEXT çağırın. |
TB_GETBUTTONTEXT | arabellek boyutunu almak için NULL parametre değeriyle iletiyi çağırın ve sonra dizeyi almak için iletiyi ikinci kez çağırın. |
TTM_GETTEXT | Bu ileti, arabelleğin boyutunu bilmeniz veya belirtmeniz için bir yol sağlamaz. |
TVM_GETISEARCHSTRING | Arabellek boyutunu almak için bir NULL parametre değeri geçirerek iletiyi çağırın ve sonra dizeyi almak için iletiyi ikinci kez çağırın. |
İlgili konular
-
Diğer Kaynaklar
-
Güvenlik API'leri için En İyi Yöntemler