C++ için En İyi Güvenlik Yöntemleri
Bu makale, güvenlik araçları ve yöntemleri hakkında bilgi içerir. Bunları kullanmak uygulamaları saldırılardan muaf yapmaz, ancak başarılı bir saldırı olasılığını azaltır.
Visual C++ Güvenlik Özellikleri
Bu güvenlik özellikleri Visual C++ derleyicisi ve bağlayıcısı içinde kurulmuştur:
/gs (arabellek güvenlik denetimi)
Talimatlar derleyiciye taşma algılama kodunu faydalanma riski bulunan işlevlere eklemesini bildirir. Bir taşma algılandığında, yürütme durdurulur. Varsayılan olarak, bu seçenek açıktır./ safeseh (resim bulunan güvenli özel durum işleyicileri)
Talimatlar her özel durum işleyici adresi içeren bir tablo çıktı görüntüsü içerisine dahil etmek için bağlayıcıya bildirir. Çalışma zamanında, işletim sistemi, yalnızca yasal özel durum işleyicilerinin yürütüldüğünden emin olmak için bu tabloyu kullanır. Bu, çalışma zamanında kötü niyetli bir saldırı tarafından getirilen özel durum işleyicilerin yürütülmesini engeller. Varsayılan olarak, bu değer kapalıdır./ NXCOMPAT, / nxcompat (Veri Yürütme Engellemesi ile uyumlu)
Bu derleyici ve bağlayıcı seçenekleri Veri Yürütme Engellemesi (DEP) uyumluluğunu etkinleştirir. DEP CPU'yu kod olmayan sayfa yürütmeye karşı korur./analyze (Kod Çözümleme)
Bu derleyici seçeneği, arabellek taşması, başlatılmamış bellek, boş işaretçi başvuru kaldırması ve bellek sızıntısı gibi olası güvenlik sorunlarını raporlayacak kod analizini etkinleştirir. Varsayılan olarak, bu değer kapalıdır. Daha fazla bilgi için bkz. Kod çözümleme için c/C++ genel bakış./ DYNAMICBASE (kullanım adres alanı düzeni rasgele)
Bu bağlayıcı seçeneği, yürütmenin başlangıcında hafızadaki farklı yerlerden yüklenebilen yürütülebilir bir görüntü yaratmayı sağlar. Bu seçenek aynı zamanda hafızadaki yığın konumunu da çok daha az öngörülebilir yapar.
Gelişmiş Güvenlik CRT
C Çalışma Zamanı Kütüphanesi (CRT) güvenlik riskleri taşıyan işlevlerin güvenli sürümlerini içerecek şekilde arttırılmıştır—örneğin, denetlenmeyen strcpy dizesi kopyalama fonksiyonu. Bu fonksiyonların eski, güvenli olmayan sürümleri artık önerilmiyor olmasından dolayı bunlar derleme zamanı uyarılarına neden olurlar. Derleme uyarılarını bastırmak yerine bu CRT işlevlerinin güvenli sürümlerini kullanmanızı öneririz. Daha fazla bilgi için bkz. crt güvenlik özellikleri.
SafeInt Kitaplığı
SafeInt Kitaplığı öğesi tam sayı taşmasını ve uygulama matematiksel işlemler gerçekleştirdiğinde bunların kötüye kullanılabilir hatalar oluşmasını engellemeye yardım eder. SafeInt kitaplığı SafeInt sınıfı, SafeIntException sınıfı, ve çeşitli SafeInt işlevleri öğelerini içerir.
SafeInt sınıfı tamsayı taşmasına karşı korur ve sıfır ile bölmeden yararlanır. Farklı türlerdeki değerler arasındaki karşılaştırmaları işlemek için kullanabilirsiniz. İki hata işleme ilkesi sağlar. SafeInt sınıfının varsayılan ilkesi bir matematiksel işlemin neden tamamlanamadığını bildirmek için bir SafeIntException sınıfı özel durumu atmaktır. İkinci ilke SafeInt sınıfına ilişkin program yürütmeyi durdurmak içindir. Ayrıca özel bir ilke tanımlayabilirsiniz.
Her SafeInt işlevi bir matematiksel işlemi kötü amaçla kullanılabilecek bir hatadan korur. İki farklı çeşitte parametreyi aynı türe dönüştürmeden kullanabilirsiniz. Birden çok matematik işlemini korumak için SafeInt sınıfını kullanın.
İşaretli Yineleyiciler
Denetlenen bir yineleyici, konteyner sınırlarını zorlar. Varsayılan olarak, işaretli bir yineleyici sınırların dışına taştığında, bir istisna oluşturur ve program çalışmasını sonlandırır. _SECURE_SCL_THROWS ve _ITERATOR_DEBUG_LEVEL gibi önişlemci tanımlarına atanmış değerlere bağlı diğer yanıt düzeylerini sağlar. Örneğin, _ITERATOR_DEBUG_LEVEL=2 üzerinde, denetlenen yineleyici hata ayıklama modunda, onaylama işlemleri ile kullanılabilir hale getirilmiş, kapsamlı bir doğruluk denetimi sağlar. Daha fazla bilgi için bkz. İşaretli Yineleyiciler.
Yönetilen Kod için Kod Analizi
FxCop olarak da bilinen, Yönetilen Kod için Kod Analizi, uyum için .NET Framework tasarım yönergeleri derlemelerini kontrol eder. FxCop her derleme içindeki kodu ve meta verileri aşağıdaki alanlardaki hataları denetlemek için analiz eder:
Kitaplık tasarımı
Yerelleştirme
Adlandırma kuralları
Başarım
Güvenlik
Windows Uygulama Doğrulayıcısı
Uygulama Doğrulayıcısı (AppVerifier) olası uygulama uyumluluğu, kararlılık ve güvenlik sorunları belirlemenize yardımcı olabilir.
AppVerifier, bir uygulamanın işletim sistemini nasıl kullandığını izler. Uygulama çalışırken dosya sistemini, kayıt defterini, belleği ve API'leri izler ve ortaya çıkardığı sorunlar için kaynak kodu düzeltmeleri önerir.
AppVerifier'ı şunlar için kullanabilirsiniz:
Yaygın programlama hatalarına neden olan potansiyel uygulama uyumluluğu testi.
Uygulamayı bellekle ilgili sorunlara yönelik olarak inceleyin.
Bir uygulamada olası güvenlik sorunlarını tanımlayın.
AppVerifier Uygulama Uyumluluk Araç Seti'nin parçasıdır, Uygulama Uyumluluğu TechNet web sitesinde erişilebilir olan.
.NET Framework Güvenlik Özellikleri
Configuring Security Policy .NET Framework güvenlik ilkelerini ayarlamak için kılavuz ve araçları açıklar.
Windows Kullanıcı Hesapları
Yönetici grubuna ait Windows kullanıcı hesapları kullanmak geliştiricileri ve --uzantı yoluyla-- müşterileri güvenlik riskleriyle yüz yüze bırakır. Daha fazla bilgi için, bkz. Kullanıcılar Grubunun Üyesi Olarak Çalışma ve Kullanıcı Hesabı Denetimi (UAC) Uygulamanızı Nasıl Etkiler.
Ayrıca bkz.
Başvuru
Kavramlar
Kullanıcı Hesabı Denetimi (UAC) Uygulamanızı Nasıl Etkiler