işin mantığını kısaca anlatacak olursak;
mesela
haber.php?id=11
bu url diyelim. sen haber.php'de GET ile gelen id yi mysql sorgusunda kullanacaksin.
$sql = mysql_query("SELECT * FROM haberler WHERE id='$_GET['id']'");şeklinde kullanabilirsin. fakat burada güvenlik açığı oluşur. kişi haber.php?id= den sonra 11 yerine istedigi mysql satirlarini yazarak senin sorgunun içinde kendide sorgu dönderebilir. bunun önleme için basit yollar izlenebilir.
1- GET ile gelen ID lerin sadece sayi olmasini saglariz.
örnek ;
is_numeric if (!is_numeric($_GET['id'])) { //is_numeric ile getten gelen id yi kontrol ettik eğer id numara degil ise
echo "Güvenlik"; //ekrana güvenlik yazdik.
exit; //işlemleri sonlandırdık.
}2- Eğer GET ile sadece sayılar degilde baska şeylerde geliyor ise
burada
addslashes yada
mysql_real_escape_string kullanabiliriz.
$id = mysql_real_escape_string($id);
ya da
$id = addslashes($id);
gibi bu işlemlerden sonraki mysql sorgularimizda $_GET['id'] degilde $id değişkenini kullaniriz.
Bunlar en basitleride PHP güvenlik konusunda internetten binlerce kaynak bulunabilir.