Php’ye yeni başlayanların en büyük hatalarından birisinin bunları(GET ve POST) hiç bir filtreden geçirmeyerek sayfaya include/query/echo v.b şeyler yapmasıdır.
Önceden ben sadece mysql_real_escape_string den geçirip sayfaya yüklüyordum ve güvenli oldugunu düşündüm ama yanılmışdım
Geçen günlerde bir heykır sayfama java-script yedirtmeyi başardı ve bende hemen bu açığa karşın bir önlem almak için bir araştırma yapdım.
Aşağıdaki fonksiyon bu tür güvenlik açıklarını kapatmaya yeterlidir.
[php]function temizledegel($string)
{
if(get_magic_quotes_gpc())
{
$string = stripslashes($string);
}
elseif(!get_magic_quotes_gpc())
{
$string = addslashes($string);
}
$string = @mysql_real_escape_string($string);
return $string;
}[/php]
Kullanımı:[php] temizledegel($_GET[name]);[/php] gibi…
[…] $string = addslashes($string); } $string = @mysql_real_escape_string($string); return $string; } POST ve GET Güvenliğini sağlamak - muzaffer eygün __________________ […]
[…] yap. Bu arada
teşekürler…
yalnız hala verdiğin fonksiyonda bir problem var.
şimdi get te, ” işareti varsa, ve magic quotes açıksa, bunu \” yapıyor, ardından filtreliyor. burda problem yok. ancak
get te ” işareti varsa, ve magic quotes kapalı ise, addslashes ile \” haline getiriyorsun, ardından real escapse fonksiyonuyla \\\” haline getiriyorsun. yine çift filtrelenmiş oluyor
I know some wow gold in wow.