Bir programcı veya geliştirici olarak, güvenli uygulamalar yaratmanın önemi abartılamaz.
Yazılım güvenliği, yazılımdaki olası güvenlik açıklarını belirleyerek ve bunlara karşı korunmak için gerekli önlemleri alarak kötü niyetli saldırıların yönetimi ile ilgilenir.
Yazılım hiçbir zaman% 100 güvenli olamaz çünkü bir geliştirici bir hatayı gözden kaçırabilir, mevcut vakaları düzeltmek için yeni hatalar oluşturabilir veya güncellemeler yoluyla yeni güvenlik açıkları oluşturabilir.
Ancak, tüm yazılım geliştiricilerin ilk etapta güvenli yazılım yazımı güvenli kod oluşturmalarını ve kodunuzu verimli bir şekilde test etmelerini sağlamak için kullanabilecekleri iki temel uygulama vardır.
Güvenli Kod Nasıl Yazılır
Güvenli kod yazmak, hata ile başa çıkmaktan ibarettir. Bir kullanıcının uygulamanızı besleyebileceği ve programınızda bu değer için bir yanıt oluşturabileceği her potansiyel değeri tahmin edebiliyorsanız, o zaman güvenli kod yazıyorsunuz demektir.
Bu, düşündüğünüzden çok daha basittir çünkü tüm iyi geliştiriciler, geliştirdikleri uygulamalar hakkında neredeyse her şeyi bilirler. Bu nedenle, uygulamanızın bir görevi yerine getirmek için gerektirdiği her değeri (onaylanmış değerler) bilmeli ve var olan diğer tüm olası değerlerin onaylanmamış bir değer olduğunu anlamalısınız.
Güvenli Kod Yazma
Diyelim ki, bir kullanıcıdan yalnızca iki tamsayı değeri kabul eden ve bunlar üzerinde bir toplama işlemi gerçekleştiren bir program oluşturmak istiyorsunuz. Bu tek cümleyle, iyi bir geliştirici gibi, artık uygulamanız hakkında her şeyi biliyorsunuz. Bu programın kabul edeceği tüm değerleri (tam sayı değerleri) biliyorsunuz ve bu programın tamamlayacağı görevi (bir toplama işlemi) biliyorsunuz.
Programın Java Örneğinde Oluşturulması
java.util içe aktarın. Tarayıcı;
public class Ana {
// Programı çalıştıran ve iki değeri toplayan ana işlev
public static void main (String [] args) {
System.out.println ("Lütfen iki tam sayı değerinizi girin:");
int değer1;
int değer2;
Tarayıcı girişi = yeni Tarayıcı (System.in);
değer1 = input.nextInt ();
değer2 = input.nextInt ();
toplama (değer1, değer2);
input.close ();
}
// iki değeri toplayan ve bunların toplamını görüntüleyen işlev
özel statik boşluk ekleme (int değer1, int değer2) {
int toplam;
toplam = değer1 + değer2;
System.out.println ("Girdiğiniz iki tam sayı değerinin toplamı:" + toplam);
}
}
Yukarıdaki kod, gereksinimleri tam olarak karşılayan bir uygulama oluşturur. Yürütme sırasında, konsolda aşağıdaki satırı üretecektir:
Lütfen iki tam sayı değerinizi girin:
Uygulama daha sonra kullanıcı konsola iki tamsayı değeri girene kadar duraklatılmış olarak kalacaktır (bu, ilk değeri yazmak, enter tuşuna basmak ve tekrar etmek anlamına gelir).
Kullanıcı değerleri girerse 5 ve 4 konsolda, program aşağıdaki çıktıyı üretecektir:
Girdiğiniz iki tam sayı değerinin toplamı: 9
Bu harika; program tam olarak yapması gerekeni yapıyor. Bununla birlikte, hain bir kullanıcı gelir ve uygulamanıza "g" gibi tamsayı olmayan bir değer girerse sorunlar olacaktır. Bunun nedeni, uygulamadaki hiçbir kodun onaylanmamış değerlere karşı koruma sağlamamasıdır.
Bu noktada, uygulamanız çökecek ve bundan sonra ne yapacağını tam olarak bilen bilgisayar korsanı için uygulamanıza olası bir ağ geçidi oluşturacaktır.
Program Örneğinizi Güvenceye Almak
java.util içe aktarın. InputMismatchException;
java.util içe aktarın. Tarayıcı;
public class Ana {
// Programı çalıştıran ve iki değeri toplayan ana işlev
public static void main (String [] args) {
Deneyin {
System.out.println ("Lütfen iki tam sayı değerinizi girin:");
int değer1;
int değer2;
// kullanıcıdan gelen her girişi okumak için tarayıcı sınıfını kullanmak,
// ve ilgili değişkene atayın (değerler tamsayı değilse bir istisna atar)
Tarayıcı girişi = yeni Tarayıcı (System.in);
değer1 = input.nextInt ();
değer2 = input.nextInt ();
// toplama işlevini çağırır ve iki değeri ona iletir
toplama (değer1, değer2);
// kullanımının sonuna geldikten sonra girdi akışını kapatır
input.close ();
// try bloğuna atılan tüm hataları ele alın
} catch (InputMismatchException e) {
System.out.println ("Lütfen geçerli bir tamsayı değeri girin.");
} catch (İstisna e) {
System.out.println (e.getMessage ());
}
}
// iki değeri toplayan ve bunların toplamını görüntüleyen işlev
özel statik boşluk ekleme (int değer1, int değer2) {
int toplam;
toplam = değer1 + değer2;
System.out.println ("Girdiğiniz iki tam sayı değerinin toplamı:" + toplam);
}
}
Yukarıdaki kod, istisna işleme gerçekleştirdiği için güvenlidir. Bu nedenle, tamsayı olmayan bir değer girerseniz, program aşağıdaki kod satırını üretirken doğru şekilde sonlanacaktır:
Lütfen geçerli bir tamsayı değeri girin.
İstisna İşlemi Nedir?
Esasen, istisna işleme, hata işleme kodunu normal işleme kodundan ayırdığınız modern bir hata işleme sürümüdür. Yukarıdaki örnekte, tüm normal işlem kodu (veya potansiyel olarak bir istisna atabilecek kod) bir Deneyin blok ve tüm hata işleme kodu içindedir tutmak bloklar.
Yukarıdaki örneğe daha yakından bakarsanız, iki yakalama bloğu olduğunu göreceksiniz. İlki bir alır InputMismatchException argüman; bu, tamsayı olmayan bir değer girilirse atılan istisnanın adıdır. İkincisi bir alır İstisna argüman ve bu önemlidir, çünkü amacı geliştiricinin test sırasında bulamadığı kod içindeki herhangi bir istisnayı yakalamaktır.
İlişkili: Java İstisnaları: Onları Doğru Kullanıyor Musunuz?
Kodunuzu Test Etme
Paketlemeden önce kodunuzu test etmenin ve yeniden test etmenin gücünü asla küçümsememelisiniz. Birçok geliştirici (ve uygulamalarının kullanıcısı), yazılım halka açık olduktan sonra yeni hatalar bulur.
Kodunuzu baştan sona test etmek, uygulamanızın akla gelebilecek her senaryoda ne yapacağını bilmenizi sağlar ve bu, uygulamanızı veri ihlallerinden korumanızı sağlar.
İlişkili: İlk Yazılım Test İşinizi Nasıl Yapabilirsiniz?
Yukarıdaki örneği düşünün. Tamamlandıktan sonra uygulamayı yalnızca tam sayı değerleri ile test ederseniz ne olur? Durum böyle olmadığında, tüm olası hataları başarıyla tanımladığınızı düşünerek uygulamadan uzaklaşabilirsiniz.
Gerçek şu ki, tüm olası hataları tanımlayamayabilirsiniz; bu nedenle hata işleme, kodunuzun test edilmesiyle birlikte çalışır. Yukarıdaki programın test edilmesi, belirli bir senaryoda olası bir hatanın meydana geleceğini göstermektedir.
Bununla birlikte, test sırasında görünmeyen başka bir hata varsa, yukarıdaki koddaki ikinci catch bloğu sorunu çözecektir.
Veritabanınızın Güvenliğini Sağlama
Uygulamanız bir veritabanına bağlanırsa, bu veritabanına erişimi engellemenin en iyi yolu, uygulamanızın tüm yönlerinin güvenli olduğundan emin olmaktır. Ancak, uygulamanız yalnızca söz konusu veritabanına bir arayüz sağlamak amacıyla tasarlanmışsa ne olur?
İşlerin biraz daha ilginç olduğu yer burası. Veritabanı, en temel biçimiyle, kullanıcının verileri eklemesine, almasına, güncellemesine ve silmesine olanak tanır. Bir veritabanı yönetim sistemi, bir kullanıcının bir veritabanı ile doğrudan etkileşime girmesine izin veren bir uygulamadır.
Çoğu veri tabanı hassas veriler içerir, bu nedenle, bu verinin bütünlüğünü korumak ve bu verilere erişimi sınırlandırmak için tek bir gereksinim erişim kontrolü vardır.
Giriş kontrolu
Erişim denetimi, bir veritabanına erişebilecek kişi türlerini tanımlayarak ve sahip oldukları erişim türünü kısıtlayarak bir veritabanının bütünlüğünü korumaya çalışır. Bu nedenle, iyi bir veritabanı yönetim sistemi, veritabanına kimin, ne zaman ve ne yaptığını kayıt altına alabilmelidir.
Ayrıca, kayıtlı bir kullanıcının etkileşim yetkisine sahip olmadığı verilere erişmesini veya bunları düzenlemesini engelleyebilmelidir.
Yazılım Güvenliği Tüm Geliştiriciler İçin Çok Önemli Bir Beceridir
İyi bir yazılım geliştirmek, yazılımınızın herhangi bir kötü niyetli saldırıya dayanabilmesini sağlamakla eş anlamlıdır. Bu, yalnızca güvenli kodun yazılması, bir uygulamanın sürekli olarak test edilmesi ve verilerinize kimlerin erişebileceğinin kontrolünün sürdürülmesi yoluyla elde edilebilir.
Artık yazılımınızı nasıl güvenli hale getireceğinizi bildiğinize göre, bazı yazılım geliştirme adımları hakkında bilgi edinmek isteyebilirsiniz.
İlk programınızı kodlamaya mı hazırlanıyorsunuz? Bu önemli yazılım geliştirme adımlarını izlediğinizden emin olun.
Sonrakini Oku
- Programlama
- Siber güvenlik
- Kodlama İpuçları
Kadeisha Kean, Tam Yığın Yazılım Geliştiricisi ve Teknik / Teknoloji Yazarıdır. En karmaşık teknolojik kavramlardan bazılarını basitleştirme konusunda farklı bir yeteneği var; herhangi bir teknoloji acemi tarafından kolayca anlaşılabilecek malzeme üretmek Yazma, ilginç yazılım geliştirme ve dünyayı dolaşma (belgeseller aracılığıyla) konusunda tutkulu.
Haber bültenimize abone ol
Teknoloji ipuçları, incelemeler, ücretsiz e-kitaplar ve özel fırsatlar için haber bültenimize katılın!
Bir adım daha…!
Lütfen size az önce gönderdiğimiz e-postadaki e-posta adresinizi onaylayın.