Aynı sorunu ben de yaşadım dün,
Kendimce bir kod yazdım, test ettim, gayet sağlıklı çalışıyor.
veritabanı bağlantısında PDO yoksa şu kodu kullanman yeterli ama daha iyisi için PDO kullanmak en güzelidir.:
//ESCAPE SQL INJECTION START
function cleanInput($str){
$str = nl2br(htmlspecialchars(strip_tags(trim(urldecode($str)))));
$str = mysql_real_escape_string($str);
if(striposa($str, array(
"select",
"delete",
"insert",
"where",
"concat",
"floor",
"version",
"having min",
//"cast",
//"count",
//"ifnull",
//"order by",
//"rand(",
//"group by",
//"limit",
" AND",
"AND ",
" OR",
"OR ",
//"' ",
//'" ',
//" '",
//' "',
"create",
"drop",
"update"
)))
{
return '';
}
return $str;
}
//CHECK IN ARRAY
function striposa($content,$arraytofind){
foreach($arraytofind as $find){
if(stripos($content, $find) !==false){return true;}
}
return false;
}
foreach($_POST as $key=>$data){$_POST[$key] = cleanInput($data);}
foreach($_GET as $key=>$data){$_GET[$key] = cleanInput($data);}
foreach($_REQUEST as $key=>$data){$_REQUEST[$key] = cleanInput($data);}
#ESCAPE SQL INJECTION ENDNOT: Dışardan istek gönderildiğinde çalışan PHP dosyalarınızı editlediğinizde, include('baglan.php'); veya include('veritabani.php'); vb. isimlerinde yazılmış DB bağlantı dosya satırı olması gerekiyor. o satırı bulup hemen sonrasındaki satıra yukarıdaki verdiğim kodu yapıştırın, bunu yazarsanız sızma vs yaşanmaz. Bu yukarıdaki yazdığım kod, get ve post verilerinin tamamını süzgeçten geçirir. ayrıca xss attacklarından da korunmuş olursunuz..
İstersen bu yukarıdaki kodu bir fonksiyon içerisine alıp, heryerde tek komutla kullanadabilirsiniz.