Örnek vereyim;
1. login formu düşün. kullanıcı adı ve şifre isteniyor. eğer formun post edildiği kod betiğinde bu iki alan için kontrol yapılmamışsa kontrol sorguna inject olunabilir.
mesela formunda kullanici_adi ve sifre inputların olsun. kod betiğinde de sql sorgun şöyle:
sql = " SELECT * FROM uyeler WHERE kullanici_adi='"&Request.Form("kullanici_adi")&"' AND sifre='"&Request.Form("sifre")&"' "
sql de tek tırnak --> ' özeldir, stringler için belirteçtir. eğer sen kullanıcı adı alanına ' 1 or 1=1 -- yazarak gönderirsen tırnaklar sayesinde sorguya ek parametreler eklemiş olursun. 1=1 dediğin için de cevap otomatikman olumu dönecek ve login gerçekleşecek.
2. querystring'den de aynı şekilde. sayfan mesela haberoku.asp?ID=1 olsun.
sen sorgunun içine bu ID parametresinin karşılığı olan 1'i alacaksın.
sql = " SELECT * FROM haberler WHERE id = "&Request.Querystring("ID")&" "
1 olan kayıt gelir. eğer haberoku.asp?ID=1 UNION SELECT 0 FROM admin .... diye devam edip koda müdahale edebilirsin ve admin bilgilerine ulaşabilirsin. iyi sql bilmek gerekir.
umarım demek istediğimi anlamışsındır.
sql açıklarından nasıl korunurum diyorsan:
1. formdan ve query den gelen verileri filtreleyeceksin, tırnak işaretini &39a;ya çevireceksin.
2. queryden aldığın verilerde de aynı şekilde filtre yapacaksın, eğer sayı alıyorsan gelenin sayı olup olmadığını da kontrol edeceksin. mesela haberoku.asp?ID=1
If NOT IsNumeric(Request.Querystring("ID")) Then
Response.Write "DURRR"
Response.End
End If
bu şekilde ID nin sayı olup olmadığını kontrol edersin.
googleda araştır bu işi. hadi kolay gele.