C++ Part 1: Güvenli Kod Geliştirme

C++ Programlama Dili

C++ (C Plus Plus), 1979 yılında Bjarne Stroustrup tarafından geliştirilen nesne yönelimli bir programlama dilidir. C dilinin devamı niteliğindedir ve en önemli farkı nesne yönelimli olmasıdır.

C++ Ne İçin Kullanılır?

Sistem yazılımları (işletim sistemleri), oyunlar, görüntü işleme, sürücü yazılımları, gömülü firmware yazılımlar vs. C++ dili ile geliştirilmektedir. Çok sayıda uygulamada ve işletim sisteminde yaygın olarak kullanılır. Örneğin OpenCV görüntü işleme kütüphanesi, Unity oyun motoru, Chrome tarayıcısı, TensorFlow yapay zekâ aracı C++ ile geliştirilmiştir.

C++ Güvenli Bir Dil Midir?

Hayır. Güvenli bir dil değildir ama çok yönlü bir dil olduğundan tercih edilir. Güvenli olmamasının temel nedeni belleğe direkt olarak işaretçilerle (pointer’lar ile) erişilebilmesidir. Bu da arabellek taşması (buffer overflow) ve dize (format string) gibi saldırılara maruz kalınmasına neden olmaktadır. C++’ta bir değişken ya da dizi oluşturulurken hafızada belirlediğiniz karakter kadar yer tahsis edilir. Örneğin char dizi[5]; dediğinizde hafızada 5 byte’lık yer ayırılır. Kod içerisinde 5 karakterden daha uzun bir veri atandığında ya da dışarıdan alınan veri 5 karakterden daha büyük ise bu bir hataya neden olacaktır ve genellikle program çalışmayı sürdürmez. Eğer belleği taşırıp diğer hafıza alanlarına yazılacak byte’lar saldırgan tarafından kontrol edilebiliyorsa, programın akışını kontrol edebilmek ya da değiştirmek mümkün olur.

Güvenli C++ Kodları Yazmak Mümkün Mü?

Evet mümkün. Saldırılara eğilimli olmasının yanı sıra C ve C ++ vazgeçilmezdir. Bu nedenle, verilerin bütünlüğünü ve gizliliğini sağlarken programların en iyi şekilde çalışmasını sağlamak için bu dillerde güvenli, sağlam bir kodun nasıl geliştirileceğini bilmek önemlidir. Bu blog serimizde hem C++ diline sıfırdan başlayacağız hem de daha güvenli kod yazmak için çözüm önerilerini araştırıp sizinle paylaşacağız.

Örnek Bir Kod ve Açıklamaları

C++ programı yazmak için bir C++ derleyicisi indirmemiz gerekmekte. Derleyiciler, yazılan kodları derleyerek makinelerin anlayabileceği makine kodlarına çevirirler. Biz bunun için hafif bir program olan Dev-C++ derleyicisini kullanıyoruz. Şuradan indirebilirsiniz.

1.png

  • Yorum satırları (derleyici tarafından derlenmeyen yani koda hiçbir katkısı olmayan satırlar) // işaretleri ile gösterilir. Birden fazla satır yorum satırı olarak kullanılacağı zaman ilk satırın başına /* işareti ve son yorum satırının sonuna */ işaretleri yazılır.
  • #include<> komutu ile programımız için gerekli olan kütüphaneler eklenir. Iostream kütüphanesi, giriş/çıkış işlemlerini gerçekleştirmek için kullanılır.
  • Using kodu herhangi bir komutu tanımlamak için kullanılır. Namespace ise programda kullanılan bu komutların hepsini tanımlamaya izin verir. Mesela programda kullanılan her cout<< komutu için std::cout<< tanımlaması yapılmak zorundadır. using namespace std; komutu ile std:: ön ekini tüm programdan kaldırıyoruz.
  • 6-22. satırlarda bulunan main bloğu programımızın gövdesi niteliğindedir. Asıl işlemler burada yapılır.
  • int (integer), tam sayılar için kullanılan veri tipidir. double ise ondalıklı/kesirli sayılar için kullanılan veri tipidir.
  • cout << ifadesi ekrana yazı yazdırmak için kullanılır. (okunuşu; si out )
  • cin >> ifadesi kullanıcıdan veri girişi yapmak için kullanılır. Girilen veriler sayi1 ve sayi2 değişkenlerine atanmıştır. (okunuşu; si in)
  • +, , * ve / operatörleri tahmin edilebileceği üzere toplama, çıkarma, çarpma ve bölme işlemlerini gerçekleştirir.
  • 18. satırda bulunan (double) ifadesi tip dönüşümü yapmak için kullanılır. Hatırlarsanız sayi1 ve sayi2 değişkenlerimiz tam sayı değişkenlerdi. Tam sayının tam sayıya bölümü yine tam sayı olacaktır. Bu yüzden tam sayı çıkan sonucu double tipinde kesirli olarak görmek istediğimiz için bu ifadeyi kullanırız.
  • return 0 ifadesi, main() işlevini sonlandırır ve işletim sistemine 0 değerini döndürür. Tipik olarak, 0’ın dönüş değeri normal sonlandırmayı gösterir; oysa sıfır olmayan (genellikle 1) değeri anormal sonlandırmaya işaret eder.

Programı derleyerek çalıştırmak için vurgulanan ayarı yaptıktan sonra işaretli butona tıklayınız:

2.png

Ekran çıktısı:

3.png

Sonraki yazılarda görüşmek dileği ile.

Ayşenur BURAK

 

 

Categories: C++

Yorum bırakın