Xss'in önüne geçin PHP_SELF ve PATH_INFO değerlerini kontrol edin
$_SERVER dizisi içerisinde bulunan PHP_SELF anahtarlı dizi elemanı eğer filtrelenmez ise Xss açığına sebebiyet vermektedir. Örneğin POST edilecek olan formunuzun action kısmında <?php echo $_SERVER['PHP_SELF']; ?>
biçiminde bir tanımlama yaptıysanız, bu bölüm kötü niyetli kişilerce değiştirilebilmektedir. PHP_SELF değerinden sonra / işareti kullanıldığında PHP_SELF anahtarına sahip dizi elemanı bölü işaretinden sonra gelen değerleride saklamaktadır.
Örneğin $_SERVER['PHP_SELF'] kullandığınız sayfa ismi post.php ise ve adres çubuğundan www.asd.com/post.php adresine girdiğinizde PHP_SELF değeri /post.php olacaktır. Birde şunu deneyin www.asd.com/post.php/abc PHP_SELF değişkeninin bu seferde /post.php/abc değerini alacağını görürsünüz. Peki ya kötü niyetli birisi / işaretinden sonra <script>alert('XSS SALDIRISI')</script>
yazdığında ne olacak? Tabikide <script>
tagları arasındaki javascript kodları çalışacaktır. Peki isteminiz dışında çalışan bu javascript kodları ne gibi güvenlik açıkları oluşturur? Hatırlayın hotmail accountlarının xss kullanılarak nasıl ele geçirildiğini. session ve cookie bilgileriniz çalınarak sizin bilgileriniz ile login olarak sisteminizin yönetimini ele geçirebilirler yada daha farklı saldırılar olabilir. O yüzden PHP_SELF yerine $_SERVER['SCRIPT_NAME']; kullanabilir yada htmlentities() fonksiyonu gibi fonksiyonlardan yararlanarak veyahutda kendi fonksiyonunuzu oluşturarak bu değeri filtreleyebilirsiniz. PHP_SELF için geçerli olan yazdıklarım PATH_INFO indisli dizi elemanı içinde geçerlidir. PATH_INFO değişkeni / işaretinden sonra değer alır ve PHP_SELF gibi / işaretinden sonra gelen bilgileri saklar.
Güzel bilgi sağolun. Çalışmalarıma tekrar göz atmalıyım.
7/30/2009
şuan piyasadaki birçok php scriptde php_self ne yazıkki güvenlik açısından kontrolden geçirilmeden kullanılıyor.
7/30/2009
ilk adsız umarım yardımcı olabilmişimdir.
ikinci adsız kesinlikle katılıyorum size.
7/30/2009
Yazdığım her scriptde ziyaretçilere herzaman bir numaralı suçlu gözü ile bakıyorum.
Çalışmalarımıda Php ile kodlayıp güvenliği üst düzeyde tutmaya çalışıyorum.
Fakat bir projemde 3 adet Php_self kullandığımı fark ettim ve bu değerin xss açığına sebebiyet verdiğini bilmiyordum. Teşekkür ederim yazınız için.
8/31/2009