Gayet mantıklı bir kod gibi gözükmesine rağmen, $_SERVER[] süper globali içinde tutulan, HTTP_ ile başlayan tüm değişkenler kullanıcı tarafından değiştirilebilir verilerdir. Basit bir cURL isteği düşünün, eklemeniz gereken parametre şu:
curl_setopt($ch,CURLOPT_HTTPHEADER,array("X_FORWARDED_FOR: tamperdata.blogspot.com"));Eğer bu değeri veritabanına alıyorsanız SQL Injection, ekrana basıyorsanız zararsız şekilde XSS saldırılarına yol açar.
Kısaca, hem REMOTE_ADDR, hem de X_FORWARDED_FOR loglamak en mantıklısı.
Aynı şekilde $_SERVER[] dizisi içinde bulunan, PHP_SELF, PATH_INFO, PATH_TRANSLATED gibi değişkenler de aynı durumda.
index.php/
_SERVER["PATH_INFO"] = /eheh
_SERVER["PATH_TRANSLATED"] = /var/www/domain.tld/eheh
_SERVER["PHP_SELF"] = /index.php/eheh
URI ile oynayarak, phpinfo(); çıktısından sadece URI üstünden değişen globalleri görebilirsiniz.
( bir giriş falan yapmadan direk girdik ama, böyle oluversin. bu blogda PHP uygulaması geliştirenler için güvenlik önerileri/önlemleri ele alınacaktır.)
Hiç yorum yok:
Yorum Gönder