Büyük güçle harika geliyor sorumluluk
Örümcek adam
Serinin bu ikinci bölümüne tekrar hoş geldiniz. İlk bölümde, neden C/C ++ ‘dan uzaklaşmak için öneriler olduğunu inceledik. Bu bölümde, C ve C ++ ‘ın onlarla birlikte getirdiği gerçek risklerin bazılarını nasıl azaltabileceğimizi ve kaldırabileceğimizi inceleyeceğiz.
C ve C ++ arasında farklılıklar var, bu yüzden önerileri bölümlere ayırdım. İlk c, sonra C ++.
Güvenli C Programlama
C’de güvenli programlama, bellek yönetimi, giriş validasyonu ve sistem düzeyinde etkileşimlerle ilgili doğal güvenlik açıkları nedeniyle dikkatli bir dikkat gerektirir. Güvenli C programlama için kapsamlı rehberlik aşağıdadır:
1. Giriş doğrulaması
2. Tampon taşma koruması
Özellikle güvenli işlevleri kullanma konusu yeni kod yazarken önemlidir, sonraki C standartları tamponları manipüle ederken en berbat hatalardan kaçınabilecek işlevsellik ile birlikte gelir.
3. Bellek Yönetimi
Örnek:
4. Derleyici ve güvenlik araçlarının kullanımı
GCC’yi kullanan örnek:
GCC -Duvar –Wextra –Taş –fstack-Protector -Strong -d_fortify_source = 2 -o2 -pie –fpie –program Program.c
Hızlı Güvenlik Kontrol Listesi:
Giriş Doğrulama
Arabellek taşmalarından kaçının
Güvenli Bellek Yönetimi
Tamsayı taşmalarını önleyin
Biçim ipi güvenlik açıklarından kaçının
Güvenli geçici dosyalar
Hata koşullarını açıkça kontrol edin
Güvenli bir şekilde derlemek
Statik/dinamik analiz araçlarıyla test edin
Ayrıcalıkları en aza indirin
Bu kılavuzun ardından, güvenlik açıklarını önemli ölçüde azaltır ve güvenli, sağlam ve güvenilir C programları sağlar, C’de yeni kod yazarken, maalesef, C’nin eski sürümlerinde daha sonraki C standartlarının faydaları olmadan milyonlarca kod satırı vardır.
Güvenli C ++ Programlama
Neyse ki, C ++ ‘da güvenli programlama için daha fazla seçeneğimiz var, çünkü bu dil C’den biraz daha yüksek bir seviyede yer alıyor. C ++’ da güvenli programlama hem dile özgü en iyi uygulamaları hem de genel güvenlik önlemlerini içerir. C ++, C’ye kıyasla güvenliği artırabilecek özellikler sağlar, ancak kötüye kullanım da güvenlik açıkları getirebilir. İşte ayrıntılı rehberlik:
1. Giriş doğrulaması
Örnek:
2. Tampon taşmalarından kaçınmak
Güvensiz:
Güvenli:
3. Güvenli Bellek Yönetimi
Akıllı işaretçiler C ++ 11’den beri C ++ ‘da. Akıllı işaretçilerle ilgili güvenlik faydalarını zorlukla abartabilirim, bu yüzden burada faydalardan birkaç örnek daha ekledim.
C ++ ‘daki akıllı işaretçiler, RAII (kaynak edinimi başlatma) prensibine bağlı olarak otomatik ve daha güvenli bellek yönetimi sağlar. Faydaları şunları içerir:
1. Otomatik bellek yönetimi
2. Kaynak güvenliği
3. İstisna Güvenliği
4.
5. Basitleştirilmiş Kod
6. Azaltılmış bilişsel yük
7. Standart kaplarla birlikte çalışabilirlik
Akıllı işaretçiler kullanmadan örnek:
Akıllı işaretçilerle örnek:
Güvenli C ++ Programlama için Hızlı Kontrol Listesi:
Her zaman girişi doğrula
RAII ve akıllı işaretçiler kullanın
Güvenli STL Konteyner Yöntemleri
İstisnaları dikkatli ve tutarlı bir şekilde kullanın
Tamsayı taşmalarını önleyin
C tarzı G/Ç üzerinden akışları tercih edin
Güvenli rastgele sayı üreticileri kullanın
Güvenlik bayrakları ve uyarılarla derlen
Statik analiz düzenli olarak kullanın
En az ayrıcalık uygulayın
Tanımlanmamış davranışlardan kaçının
Diğer
Umarım serinin bu kısmı size C ve C ++ için daha sonraki standartlarda daha güvenli kod yazmamıza yardımcı olabilecek özellikler olduğu bilgisini vermiştir. Hem C hem de C ++ için en son standartlar, her ikisi de bunları kullanmanın güvenliği ile ilgili yeni özelliklerle birlikte gelen C23 ve C ++ 23’tür.
C ve C ++ topluluklarında, önümüzdeki yıllarda alakalı kalacaklarsa, C ve C ++ ‘ın güvenli bir şekilde kullanımı daha kolay hale gelmesi gerektiğinin kabulü vardır. Son zamanlarda kayıt memurunda, C ++ ‘nın yaratıcısı Bjarne Stoustrup’un C ++ standardından sorumlu ISO komitesini, son yıllarda gördüğümüz birçok ciddi saldırıya karşı savunmak için dil içinde daha fazla savunmaya öncelik vermesi için çağırdığı bir makale vardı. Bu makaleyi burada bulabilirsiniz: C ++ Yaratıcı ‘ciddi saldırıları’ ele almak için harekete geçme çağrısı • Kayıt. Bu serinin üçüncü ve son bölümünde, C ve C ++ ‘da güvenli kod yazmamıza yardımcı olabilecek bazı araçlara bakacağım.
C/C ++ (Bölüm 2) savunmasındaki görev ilk olarak Siber Güvenlik Dergisi’nde ortaya çıktı.