SORUN:
Genelde PHP_SELF'i form action="" içinde kullanırız.Örneğin ;
echo("<form action='".$_SERVER[PHP_SELF]."' ...");
gibi kod satırlarını birçok uygulamada görürüz.Şu haliyle çok kullanışlı ve masum gözüküyor , ama bir eksikle..
PHP_SELF'te aslında query string'in bir elemanıdır.PHP "?" karakterini görene kadar adres satırındaki bilgiyi PHP_SELF değişkenine aktaracaktır.PHP_SELF çıktısını ekrana basan bir sayfaya
form.php/<script>alert(document.cookie)</script>
ile giriş yaparsak (eğer varsa) ekrana alert içinde o domaine ait cookie bilgileri gelcektir.Farkınızda olmadan okuduğunuz mailde gorunmeyen bir <img> etiketiyle cookie bilgilerinizi kaybedebilirsiniz.
ÇÖZÜM :
PHP_SELF yerine SCRIPT_NAME kullanın.Ya da PHP_SELF çıktısını ekrana basmadan önce htmlspecialchars() tarzı fonksiyonlar kontrol edin.
(Dip Not : Zamanında benzer bir konu forumda tartışılmıştı , ama bulamadım.Orda da phpinfo() çıktısındaki PHP_SELF bazlı açıktan bahsediliyordu.)