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