bak sql injection şudur
mysql_query("select * from uyeler where user = $user and password = $password");
böyle bi php komutu düşün
şimdi url den
login.php?user=admin&password=admin
sorgu da
select * from uyeler where user = admin and password = admin
böylelikle giriş yaparsın
dediğinde giriş ypıyosun veya post metodu ile veya farketmez o. şimdi diyelim ki user i biliyosun ama şifreyi bilmiyosun
login.php?user=admin&password=''%20or%201%20=%201
gibi bir url calıştırdıgını düşünelim
sorgu nasıl olur ?
select * from uyeler where user = admin and password = '' or 1 = 1
bu durumda şifreyi bilmesende giriş yapabilirsin.
olayın temeli budur. daha detayları var onları araştır bulacaksın.
engellemenin yolu ise. değişkenleri sorguya sokmadan, addslashes, mysql_real_escape_string gibi fonksiyonlar kullanarak terbiye etmektir. ayrıca hiçbir query değişkenini
password = $password
değil
password = '$password'
gibi yapmak sql injection u engellemeye katkısı olacaktır.
olay budur