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_LEVEL
gibi _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=2
denetlenen 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
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin