SQL Injection saldırıları ile neredeyse herkesin başı dertte. Büyük sistemler SQL Injection ile çok kolay hacklenebilmektedirler. Ben de bir nebzede olsa kabak gibi duran SQL Injection saldırısını önlemeyi anlatacağim.
Örnek olarak bir sorgu alalım ben projelerimde kullandıgım değerlerden örnek vereceğim.
$_POST'a gelen değerler çok önemlidir çünkü mysqldeki değerler ile karşılaştırılacaktır..
$sifre=$_POST['sifre']);
$sifre=mysql_query("select * from yonetici where `id`='$sifre'");
mysql_num_rows($kontrolet)Böyle birşey kullanmak tamamen bir hatadır çünkü SQL Injection yapacak arkadaşin ` işareti olusturmasına gerek bırakmadık. Böylece SQL ınjection saldırıları ile USER ve PASSWORD bilgilerimiz SQLden çekilebilir. Bunu önlemek ise basittir.
$sifre=$_POST['sifre']);
$sifre=mysql_query("select * from yonetici where id='$sifre'");
mysql_num_rows($kontrolet)Böyle yapıldığı taktirde SQL açığı oluşması için `gerekliliğini belirttik..` önlemek için $_POST a bunları yapmak yeterli olacaktir.
$sifre=mysql_real_escape_string(htmlspecialchars($_POST['sifre']));
$sifre=mysql_query("select * from yonetici where id='$sifre'");
mysql_num_rows($kontrolet)mysql_query de id şifre karşılaştırmasını böyle yaparsak defacerin ` işareti oluşturması koşulunu koyarız. Daha sonra mysql_real_escape_string fonksiyonu kullandığımız için arkadaş ne zaman ` oluşturmaya kalksa hata ile karşılaşacaktır..
kaynak http://www.azatmetin.com/yaz-8-sql_i...ina_onlem.html