Güvenli Web Programlama
Yazılım güvenliği çözülmemiş bir sorun olmaya devam etmektedir; iyi bilinen yazılım güvenlik zafiyetleri bile hala tehdit olmaya devam etmektedir. Güvenlik terminolojisi önemli anlamlar ifade ederken bu terimlerin doğru kullanılması önemlidir. Bilgi güvenliğinin temel özellikleri gizlilik, bütünlük ve kullanılabilirliktir. Saldırganlar, yazılımlardan yararlanmak için koddaki güvenlik açıklarından yararlanırlar ve bu güvenlik açıklarını istismar ederler. Bütün yazılım sistemleri (ve tüm varlıklar) birçok tehditle karşı karşıyadır. Yazılım güvenliğinin zafiyetlerinden kaynaklanacak, yetersiz güvenlik yüksek maliyetlere sebep olabilir. Çünkü bir web uygulamasının saldırıya uğraması özellikle kurumların mahrem bilgilerinin ifşa edilmesine sebep olabilir. Saldırı için kullanılan komutlar, güvenilmeyen girdiler dinamik olarak sentezlendiğinde, enjeksiyon saldırıları her zaman gerçekleşebilir. Noktalama işaretleri, (',*, <,>, vb) işaretleri ve meta karakterler tipik olarak saldırı aracı olarak kullanılabilecekleri için girdi doğrulamak veya potansiyel olarak tehlikeli dize girişlerini güvenli olanlara dönüştürmek amacıyla geçici kod yazmak hem çok zahmetlidir hem de tam olarak doğru olma ihtimali düşüktür. SQL enjeksiyonları, komut enjeksiyonları, kod enjeksiyonları veya XML enjeksiyonları en yaygın saldırı türlerindendir. Günümüzde yazılımları en çok istismar eden saldırı türleri arasında SQL enjeksiyon, XSS enjeksiyonu, XML enjeksiyonu, kaba kuvvet saldırıları bulunmaktadır. SQL enjeksiyonu veri tabanına sahip yazılımlarda bulunan SQL cümleleri kullanılarak gerçekleştirilmektedir. Yazılımın veri tabanındaki verilerin ele geçirilmesi, silinmesi veya değiştirilmesi gibi işlemlerin gerçekleştirilmesi için yapılır. XSS enjeksiyonu ise javascript veya ajax gibi betik diller ile kullanıcıların çerez bilgilerinin ele geçirilmesi ve yazılımlara yetkisiz erişimlerin gerçekleştirilmesine sebep olur. Kaba kuvvet saldırıları, kullanıcı adı ve şifre girişi için kullanılan web formlarına karşı yapılır. Web form alanlarında kullanıcı adı ve şifre bilgilerini tahmin etmek için sürekli deneme yapılır. Eğer şifreler kolay tahmin edilebilir olursa, kaba kuvvet saldırıları da başarılı olur. Kaba kuvvet saldırıları robot yazılımlar kullanılarak gerçekleştirilir. Kaba kuvvet saldırılarını engellemek için CAPTCHA doğrulama özellikleri kullanılır. Web uygulamalarındaki bir diğer zafiyet türü ise kabuk (shell) komutlarında, XML'de oluşturulmuş, özelleştirilmiş komut dosyalarında ortaya çıkabilir.
Güvenli yazılım geliştirme yöntemleri kullanılarak bu tür saldırılar engellenebilir. Web yazılımları geliştirilirken dikkat edilmesi gereken en önemli güvenlik ilkeleri girdi doğrulama, kimlik doğrulama, yetkilendirme, parola yönetimi ve log yönetimi işlemleridir. Yazılım geliştirilirken bu ilkelere dikkat edilirse, geliştirilen yazılımlar daha güvenli olabilir. Web yazılımlarında bulunan zafiyetler yazılım geliştirme sürecinde, yazılım tasarımından veya yazılım geliştirme uzmanından kaynaklanabilir. Güvenli yazılım geliştirilirken, yazılım geliştirme yaşam döngüsü aşamalarının tamamında güvenlik ilkelerine uyulmalıdır. Yazılım geliştirme uzmanlarının da güvenli yazılım geliştirme bilgisine sahip olması gereklidir ve bilgi güvenliği farkındalığına sahip olmalıdırlar. Böylece yazılımlarda istenmeyen kötücül komutların yürütülmesine izin vermeyen, meta karakterlerin (noktalama işaretleri) uygun olmayan şekilde kullanılmasını engelleyen, kullanıcı girdilerinin doğrulanarak işlendiği güvenli yazılımlar geliştirilir.