PHP ile SQL injection’ dan korunmak

PHP MySQL uygulamalarında en önemli olaylardan biri sql injection ataklarından korunmaktır . Aşağıda verdiğim uygulama ile bu tür tehlikeli saldırılardan korunabilirsiniz .

[php]

$id = $_GET["id"];
$sql = mysql_query(" select * from haberler where id = $id ");

[/php]

Yukarıdaki gibi bir kullanımda sql injection ataklarından korunmasız bir şekilde sorgularınız çalıştırılacaktır . Bu tür bir kullanım veritabanınızı tamamen savunmasız bırakacak ve delete update insert gibi sorguları atakları yapan kişi tarafından çalıştırılabilecektir .

[php]

function sql_injection($request)
{

if(preg_match("/[\-]{2,}|[;]|[‘]|[\\\*]/", $request))
{

return "SQL Injection Tehlikesi";

}
else
{
return intval($request);
}

}

[/php]

Yukarıda verdiğim fonksiyonun çalışma mantığı sql_injection fonksiyonu ile gelen değeri preg_match metodu ile içerisinde sql injection olabilecek tırnakları ve special karakterleri arıyor . Eğer Sql Injection olabilecek kod varsa geriye ” SQL Injection Tehlikesi ” döndürüyor . Eğer Tehlikeli bir kod yok ise geriye gönderdiğiniz değeri int ‘a dönüştürerek gönderiyor .

intval() metodu gelen değeri int ‘a dönüştüreceğinden yukarıdaki sql_injection($request) fonksiyonuna string türünden değerler gönderememeniz anlamına geliyor . Eğer string göndermek istiyorsanız intval metodunu kaldırınız .

Fonksiyonun Kullanımı

[php]

// yukarıdaki fonksiyonu sql_injection.php olarak kaydedin
// include ile fonksiyonu çağıralım

include("sql_injection.php");

$sonuc = sql_injection(5654);
echo $sonuc;

[/php]