Merhaba, bu yazımda form oluştururken action kısmında kullandığımız $_SERVER['PHP_SELF'] yerleşik değişkeninin oluşturduğu açıktan bahsedeceğim. Bu kullanımın oluşturduğu açık XSS açığıdır. Saldırgan bu açıktan faydalanıp sitemize zarar verebilir.
Bu makalede nasıl zarar verilir ? sorusundan çok nasıl korunulur ? sorusuna cevap vermeye çalışacağım.
Öncelikle, bu açığı nasıl kaparız sorusuna cevap vereyim;
Görüldüğü gibi $_SERVER['PHP_SELF'] değişkenini yazdırırken htmlspecialchars fonksiyonunu kullanıyoruz. Yani $_SERVER['PHP_SELF'] değişkeninde html karakterleri varsa bunları pasifleştiriyoruz. Eğer pasifleştirmezsek sitemizdeki bu ufak ama etkili tehlike devam eder. $_SERVER['PHP_SELF'] ile normal bir form oluşturup sayfanın kaynak koduna baktığımızda sıradışı birşey görünmez;
ornek.php
http://www.site.com/ornek.php ile ulaştığımız web sayfamızda adres satırını şu şekilde değiştirdiğimizde ekranda php-xss yazan bir uyarı kutucuğu görürüz.
http://www.site.com/ornek.php/%22%3E%3Cscript%3Ealert('php-xss')%3C/script%3E
Uyarıya tamam diyip sayfanın kaynak koduna baktığımızda yukarıdaki görüntüden farklı bir görüntü görürürüz.
Başarılı bir şekilde bu javascript kodu sayfamızın kodlarına enjekte edilmiş durumda. Oysa ki $_SERVER['PHP_SELF'] yazarken htmlspecialchars kullanıp yukarıdaki javascript kodunu adres satırına yazsaydık bir uyarı kutusu çıkmayacaktı karşımıza. Aynı zaman da sayfanın kaynak koduna baktığımızda daha farklı birşey görecektik.
Bu şekilde daha güvenli olduğu kesindir. Umarım açıklayıcı bir şekilde anlatabilmişimdir. Bu makalayi yabancı kaynakları derleyerek elimden geldiğinde az ve öz bir şekilde size aktarmaya çalıştım.