IHS Blog

Hangi Programlama Dili Daha Güvenli?

Programlama-Dilleri

Bulut güvenliği şirketi Veracode son on sekiz ay içerisinde yazılmış 50.000 farklı uygulama üzerine yaptığı kod analizi ve taraması sonrasında en güvenli ve güvensiz programlama dillerinin bir listesini yayınladı. Son dönemlerde birçok kez hacklenen PHP’nin açık arayla en güvensiz programlama dili olması, yazılım mühendislerini hiç şaşırtmadı.

Raporda PHP, Java, Microsoft Classic ASP, .NET, iOS, Android, C ve C++, JavaScript, ColdFusion, Ruby ve COBOL gibi günümüzde en çok kullanılan programlama dilleri yer alıyor. İncelenen programlar içerisinde PHP ile yazılmış olanların yaklaşık %86’sının en az birinde  (XSS) açığı olduğu, %56’sında en az bir SQL injection yazılım hatası olduğu ve %73’ünde şifreleme sorunları olduğu tespit edildi. PHP’ye benzer bir kodlama yapısı olan ve çok fazla açığı olmasıyla bilinen ColdFusion diliyle yazılan uygulamaların ise %62’sinde bir SQL injection yazılım hatası olduğu ortaya çıktı.

Java uygulamalarının %21’inde SQL injection açığı, Microsoft’un farklı temel dilleri tek bir işletim ortamında bir araya getirmeyi amaçlayan .NET çerçevesiyle yazılan uygulamaların ise %29’unda SQL açığı olduğu tespit edildi.

Elbette farklı diller farklı amaçlar için kullanılır ve PHP ile Java veya C++’ı karşılaştırmak elma ile armudu karşılaştırmak gibidir. PHP özünde interneti bir arada tutmak için kullanılırken, Java ve C++ daha ziyade derlenmiş/yürütülebilir yazılımlar geliştirmek için kullanılır. PHP bir web tarayıcısıyla çalışırken, Java (ve diğerleri) bizzat web tarayıcısını çalıştırır.

Raporda SQL injection’u ve Siteler Arası Kod Çalıştırma gibi web açıklarının .NET ve Java uygulamalarından ziyade Classic ASP, ColdFusion ve PHP gibi web kod dilleri arasında yaygın olması dikkat çekici olduğu gözlemleniyor. Bu durum büyük ihtimalle her dilin özellik setleri arasındaki farklılıklardan kaynaklanıyor. Classic ASP, PHP ve ColdFusion içerisinde .NET ve Java’da olduğundan daha az güvenlik API’si bulunmakta.

Özellikle Java’da  güvenlik açıkları otomatik olarak temizleniyor. Bu da dilin (ya da yürütme ortamının, yani Java Sanal Makine’nin) programları sistemin belleği içerisinde istenmeyen şeyler yapmaktan alıkoyduğu anlamına geliyor. Veracode’un raporunda Java ve .NET dil ailesi gibi diller, geliştiricilerin belleği doğrudan tahsis etme ihtiyacını ortadan kaldırarak, başta arabellek aşımları olmak üzere bellek tahsisiyle ilgili tüm açıkların önüne geçiyor bilgisi veriliyor.

Sorunun bir kısmını da bu dilleri kimlerin kullandığı ve bu kişilerin deneyim seviyelerinin ne olduğu oluşturuyor. Veracode Teknoloji Sorumlusu Chris Wysopal Information Week’in yaptığı bir konuşmasında “.NET ve Java programları genellikle bu dilleri okulda öğrenmiş bilgisayar mezunları tarafından kullanılır” diyor. “ColdFusion, PHP ve ASP gibi birçok kod yazım dili ise web sitesi tasarlanan, kod yazmanın ve siteleri daha interaktif hale getirmenin öğrenildiği web geliştiriciliği dünyasından geldiğini belirtiyor.”

Exit mobile version