Birkaç temel güvenlik açığı hakkında (XSS – SQL Injection)

Yaptığımız web uygulamaları üzerinde her ne kadar güvenlik önlemi alıp güvenli bir sistem oluşturduğumuzu düşünsekte, hiç bir sistem yüzde yüz olarak güvenli değildir. Sadece kod olarak düşünmemek gerek. Hosting firmanız, İşletim sistemi, Load balancer, Web server gibi bir çok varyasyon sizin kendi ayağınıza sıkmanız için yeterli. Aldığınız her türlü güvenlik önlemi bir şekilde aşılabilir. 


Güvenlik konusunda bence dikkat edilmesi gereken en büyük olay kullanıcıdır. Her kullanıcıya potansiyel suçlu gözüyle bakmak ve siteyi ona göre yapılandırmak gerekir. Sitenizi ziyaret eden kullanıcı her ne kadar sitenize zarar vermek amacında olmasada, kullanıcıya tam olarak güvenmemelisiniz. Özellikle üyelik sistemi olan sitelerin üye kayıt ve giriş sayfalarında gerekli güvenlik önlemlerini almanız gerekmektedir. Bizde bu konudan hareket ederek alabileceğimiz güvenlik önlemlerine bakalım…

Temel bir konu olacak belki ama yaklaşık olarak 3-4 senelik çalışma hayatımda görmüş olduğum
form verileri site için oldukça büyük güvenlik sorunu teşkil etmektedir. Form verilerinizi gönderirken. Formdan gelen verilerinizi zararlı kod içerebileceği ihtimali üzerine mutlaka verilerini filtrelemelisiniz. Bu filtrelemeyi yapmadığınız zaman sitenizde en büyük açıklardan biri; SQL Injection saldırısına uğrama ihtimaliniz yüksektir. (hex encode ile sql injection görmedim değil).Yarım adamlardan kurtulmak üzere PHP için PDO ile birlikte sql sorgusunu çalıştırmadan önce bind edilen parametreleri prepare methodunu tetiklemeniz yeterlidir.

Oluşabilecek bir diğer önemli açık ise XSS (Cross site scripting) açığıdır, en yaygın uygulama katmanı web saldırılarından biridir. XSS güvenlik açıkları, bir sayfaya gömülü olan, sunucu tarafında değil de istemci tarafında (kullanıcının web tarayıcısında) yürütülen komut dosyalarını hedefler. XSS’nin kendisi, HTML ve JavaScript gibi istemci tarafı komut dosyası dillerinin İnternet güvenlik zayıflıklarının getirdiği bir tehdittir. XSS kavramı, bir web uygulamasının istemci tarafı komut dosyalarını kötü niyetli kullanıcının istediği biçimde yürütmek üzere manipüle etmektir. Böyle bir manipülasyon, sayfa yüklendiğinde veya ilişkili bir etkinlik gerçekleştirildiğinde yürütülebilen bir sayfaya bir komut dosyası gömebilir.

XSS, bugün yazılımda en yaygın güvenlik açığıdır. XSS’nin bulunması ve düzeltilmesi kolay olduğu için bu durum böyle olmamalıdır. XSS açıkları kurcalama ve hassas veri hırsızlığı gibi sonuçları doğurabilir.

XSS’nin Temel Kavramları
XSS, savunmasız web uygulamaları üzerinde gerçekleştirilen web tabanlı bir saldırıdır.
XSS saldırılarında, kurban kullanıcıdır ve uygulama değildir.
XSS saldırılarında, kötü amaçlı içerik, JavaScript’i kullanarak kullanıcılara dağıtılır.

Siteler Arası Komut Dosyalarını Açıklama
Bir XSS güvenlik açığı, web uygulamaları kullanıcılardan veri topladığında ve verileri ilk olarak düzgün şekilde doğrulamadan dinamik olarak web sayfalarına eklediğinde ortaya çıkar. XSS güvenlik açıkları bir saldırganın keyfi komut çalıştırmasına ve bir kurban kullanıcısının tarayıcısında keyfi içeriği görüntülemesine izin verir. Başarılı bir XSS saldırısı, saldırıya maruz kalan web uygulamasında kurbanının tarayıcısını veya hesabını kontrol eden bir saldırgana yol açar. XSS, bir web uygulamasındaki savunmasız sayfalar tarafından etkinleştirilmesine rağmen, bir XSS saldırısı kurbanı, uygulamanın kullanıcıları değil, uygulamanın kendisi değildir. Bir XSS güvenlik açığı potensiyeli, kötü niyetli kodun kurbanın oturumu bağlamında yürütülmesiyle oluşur; bu da saldırganın normal güvenlik kısıtlamalarını aşmasına olanak tanır.