C++ için En İyi Güvenlik Yöntemleri

Bu konu, önerilen güvenlik araçları ve yöntemleri hakkında bilgi içermektedir. Bu kaynakları ve araçları kullanmak uygulamaları saldırılarından kurtarmaz. Ancak başarılı atak ihtimalini azaltır.

Visual C++ Güvenlik Özellikleri

Bu bölümde, Visual C++ derleyicisi ve bağlayıcısına yerleştirilmiş güvenlik özellikleri anlatılmaktadır.

  • /GS (arabellek güvenlik Denetim)
    Bu derleyici seçeneği, 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 (imaj, güvenli bir özel durum işleyicileri içerir)
    Bu bağlayıcı seçeneği, bağlayıcıya her bir özel durum işleyicisinin adresini içeren bir tabloyu çıktı yansımasına eklemesi emrini verir. Çalıştırma 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 seçenek devre dışı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 çalıştırmaya karşı korur.

  • / analyze (Kurumsal kod analizi)
    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 seçenek devre dışıdır. Daha fazla bilgi için bkz. C/C++ genel bakış için kod analizi.

  • / DYNAMICBASE (adres yer Yerleşim rasgele'seçim kullan)
    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ı Kitaplığı (CRT), güvenlik riskleri taşıyan işlevlerin güvenli sürümlerini içermek üzere büyütülmüştür. (Örneğin, denetlenmeyen strcpy dizesi kopyalama işlevi.) Bu işlevlerin daha eski, güvenli olmayan sürümleri artık kullanım dışı bırakılır bu nedenle kullanımları derleme zamanı uyarılarına neden olur. Derleme uyarılarını bastırmayı seçmek yerine bu CRT işlevlerinin güvenli sürümlerini kullanmanızı şiddetle öneririz. Daha fazla bilgi için bkz. Security Enhancements in the CRT.

SafeInt Kitaplığı

The SafeInt Library öğesi tam sayı taşmasını ve uygulama matematiksel işlemler gerçekleştirdiğinde bunların kötüye kullanılabilir hatalarla sonuçlanmasını engellemeye yardım eder. SafeInt kitaplığı SafeInt Class, SafeIntException Class, ve çeşitli SafeInt Functions öğ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şlemenize olanak veriri ve iki 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ı türde parametreyi aynı türe dönüştürmeniz gerekmeden 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ı zorlayan bir yineleyicidir. 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. Checked Iterators.

Yönetilen Kod için Kod Analizi

FxCop olarak da bilinen, Yönetilen Kod için Kod Analizi, Microsoft .NET Framework Tasarım Kılavuzlarına uyum için derlemeleri kontrol eden bir araçtır. 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ı

  • Performans

  • Güvenlik

Yönetilen Kod için Kod Analizi Visual Studio Uygulama Yaşam Döngüsü Yönetimi üzerine eklidir ve aynı zamanda https://www.gotdotnet.com/team/fxcop/ üzerinden yüklenebilir.

Windows Uygulama Doğrulayıcısı

Uygulama Uyumluluğu Araç Takımı'nın bir parçası olarak kullanılabilen Application Verifier (AppVerifier), geliştiricilere olası uygulama uyumluluğu, istikrar ve güvenlik sorunlarını belirlemede yardımcı olabilecek bir araçtır.

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üzeyinde düzeltmeler önerir.

Doğrulayıcı aşağıdakileri gerçekleştirmenize izin verir:

  • Yaygın programlama hatalarına neden olan potansiyel uygulama uyumluluğu testi.

  • Uygulamayı bellekle ilgili sorunlara yönelik olarak inceleyin.

  • Uygulamanın Windows 7 Yazılım Logosu Programı ve Windows Sunucusu 2008 R2 Logo Programı gibi mevcut logo programlarının gereksinimleri ile uyumluluğunu test edin.

  • Bir uygulamada olası güvenlik sorunlarını tanımlayın.

Windows Uygulama Uyumluluğu Araç Seti, TechNet web sitesinin "Uygulama Uyumluluğu" sayfasından edinilebilir.

.NET Framework Güvenlik Özellikleri

Yapılandırma güvenlik ilkesi.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.

Kullanıcı Hesabı Denetimi'ni Windows Vista Altında Kullanarak Güvenliği Artırma

Kullanıcı Hesabı Denetimi (UAC) Windows Vista'nın kullanıcı hesaplarına sınırlı ayrıcalık veren bir özelliğidir. Daha fazla bilgi için bkz. Kullanıcı Hesabı Denetimi (UAC) Uygulamanızı Nasıl Etkiler.

Ayrıca bkz.

Başvuru

System.Security

Kavramlar

Kullanıcı Hesabı Denetimi (UAC) Uygulamanızı Nasıl Etkiler

Diğer Kaynaklar

Uygulamaların Güvenliğini Sağlama