C++ İçin En İyi Güvenlik Uygulamaları

Bu makale, güvenlik araçları ve uygulamaları hakkında bilgi içerir. Bunları kullanmak uygulamaların saldırılara karşı bağışık olmasını sağlamaz, ancak başarılı saldırıların daha az olası olmasını sağlar.

Visual C++ Güvenlik Özellikleri

Bu güvenlik özellikleri Microsoft C++ derleyicisinde ve bağlayıcıda yerleşik olarak bulunur:

/guard (Denetim Flow Guard'ı etkinleştir)
Derleyicinin derleme zamanında dolaylı çağrı hedefleri için denetim akışını çözümlemesine ve ardından çalışma zamanında hedefleri doğrulamak için kod eklemesine neden olur.

/GS (Arabellek Güvenlik Denetimi)
Derleyiciye, taşma algılama kodunu kötüye kullanım riski olan işlevlere eklemesini bildirir. Taşma algılandığında yürütme durdurulur. Bu seçenek varsayılan olarak açıktır.

/SAFESEH(Görüntüde Kasa Özel Durum İşleyicileri var)
Bağlayıcıya çıkış görüntüsüne her bir özel durum işleyicisinin adresini içeren bir tablo eklemesini yönlendirir. Çalışma zamanında, işletim sistemi yalnızca meşru özel durum işleyicilerinin yürütülmesini sağlamak için bu tabloyu kullanır. Bu, çalışma zamanında kötü amaçlı bir saldırı tarafından sunulan özel durum işleyicilerinin yürütülmesini önlemeye yardımcı olur. Varsayılan olarak, bu değer kapalıdır.

/NXCOMPAT, /NXCOMPAT (Veri Yürütme Önleme ile uyumlu) Bu derleyici ve bağlayıcı seçenekleri, Veri Yürütme Engelleme (DEP) uyumluluğunu etkinleştirir. DEP, KOD olmayan sayfaların yürütülmesine karşı CPU'nun korumasını sağlar.

/analyze (Kod Analizi)
Bu derleyici seçeneği arabellek taşması, başlatılmamış bellek, null işaretçi başvuru kaldırma ve bellek sızıntıları gibi olası güvenlik sorunlarını bildiren kod analizini etkinleştirir. Varsayılan olarak, bu değer kapalıdır. Daha fazla bilgi için bkz . C/C++ için Kod Analizine Genel Bakış.

/DYNAMICBASE (Adres alanı düzeni rastgele seçmeyi kullan)
Bu bağlayıcı seçeneği, yürütmenin başlangıcında bellekteki farklı konumlara yüklenebilen yürütülebilir bir görüntü oluşturulmasını sağlar. Bu seçenek ayrıca bellekteki yığın konumunu çok daha az tahmin edilebilir hale getirir.

Gelişmiş Güvenlik CRT'si

C Çalışma Zamanı Kitaplığı (CRT), güvenlik riskleri oluşturan işlevlerin güvenli sürümlerini (örneğin, işaretlenmemiş strcpy dize kopyalama işlevi) içerecek şekilde geliştirilmiştir. Bu işlevlerin eski, güvenli olmayan sürümleri kullanım dışı bırakıldığından, derleme zamanı uyarılarına neden olur. Derleme uyarılarını engellemek yerine bu CRT işlevlerinin güvenli sürümlerini kullanmanızı öneririz. Daha fazla bilgi için bkz . CRT'de Güvenlik Özellikleri.

SafeInt Kitaplığı

Kasa Int Kitaplığı, uygulama matematiksel işlemler gerçekleştirdiğinde oluşabilecek tamsayı taşmalarını ve diğer kötüye kullanılabilir hataları önlemeye yardımcı olur. Kitaplık SafeInt Kasa Int Sınıfı, Kasa IntException Sınıfı ve birkaç Kasa Int İşlevi içerir.

sınıfı tamsayı SafeInt taşmasına ve sıfıra bölme açıklarına karşı koruma sağlar. Farklı türlerdeki değerler arasındaki karşılaştırmaları işlemek için bunu kullanabilirsiniz. İki hata işleme ilkesi sağlar. Varsayılan ilke, sınıfın SafeInt bir SafeIntException matematiksel işlemin neden tamamlanamayacağını bildirmek için bir sınıf özel durumu oluşturması içindir. İkinci ilke, sınıfın program yürütmesini SafeInt durdurması içindir. Özel bir ilke de tanımlayabilirsiniz.

Her SafeInt işlev, bir matematiksel işlemi kötüye kullanılabilir bir hatadan korur. İki farklı parametre türünü aynı türe dönüştürmeden kullanabilirsiniz. Birden çok matematik işlemini korumak için sınıfını SafeInt kullanın.

Denetlenmiş Yineleyiciler

denetlenen bir yineleyici kapsayıcı sınırlarını zorlar. Varsayılan olarak, denetlenen bir yineleyici sınırların dışında olduğunda bir özel durum oluşturur ve program yürütmeyi sonlandırır. denetlenen yineleyici, ve _ITERATOR_DEBUG_LEVELgibi _SECURE_SCL_THROWS önişlemci tanımlarına atanan değerlere bağlı olan diğer yanıt düzeylerini sağlar. Örneğin, içinde _ITERATOR_DEBUG_LEVEL=2denetlenen bir yineleyici, onaylar kullanılarak kullanılabilir hale getirilen hata ayıklama modunda kapsamlı doğruluk denetimleri sağlar. Daha fazla bilgi için bkz . İşaretli Yineleyiciler ve _ITERATOR_DEBUG_LEVEL.

Yönetilen Kod için Kod Analizi

FxCop olarak da bilinen Yönetilen Kod için Kod Analizi, the.NET Framework tasarım yönergelerine uygunluk için derlemeleri denetler. FxCop, aşağıdaki alanlardaki hataları denetlemek için her derlemedeki kodu ve meta verileri analiz eder:

  • Kitaplık tasarımı

  • Yerelleştirme

  • Adlandırma kuralları

  • Performans

  • Güvenlik

Windows Uygulama Doğrulayıcı

Uygulama Doğrulayıcı (AppVerifier), olası uygulama uyumluluğu, kararlılık ve güvenlik sorunlarını 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'ı kullanarak aşağıdakileri yapabilirsiniz:

  • Yaygın programlama hatalarından kaynaklanan olası uygulama uyumluluğu hatalarını test edin.

  • Bellekle ilgili sorunlar için bir uygulamayı inceleyin.

  • Bir uygulamadaki olası güvenlik sorunlarını belirleme.

Windows Kullanıcı Hesapları

Yönetici istrators grubuna ait Windows kullanıcı hesaplarının kullanılması, geliştiricileri ve uzantıya göre müşterileri güvenlik risklerine maruz bırakır. Daha fazla bilgi için bkz . Kullanıcı Grubunun Üyesi Olarak Çalıştırma ve Kullanıcı Hesabı Denetimi (UAC) Uygulamanızı Nasıl Etkiler?

Kurgusal Yürütme Tarafı Kanalları için Rehberlik

C++ yazılımında kurgusal yürütme tarafı kanal donanım güvenlik açıklarına karşı girintileme ve azaltma hakkında bilgi için bkz . Kurgusal Yürütme Tarafı Kanalları için C++ Geliştirici Kılavuzu.

Ayrıca bkz.

System.Security
Güvenlik
Kullanıcı Hesabı Denetimi (UAC) Uygulamanızı Nasıl Etkiler