18
uchun ishlatiladi.
SQL in’ektsiyasi zaifligining asosiy sababi shundaki,
vebilova tizimi uzatilgan
ma’lumotlarni uzatish paytida darhol aniqlay olmaydi. Kodni yozish jarayonida dasturchi
bevosita koddan foydalanadi. Ma’lumotlar qayta ishlash uchun ma’lumotlar
bazasi
tizimiga yuborilishidan oldin SQL buyruqlari bilan birlashtiriladi. Agar tajovuzkor taqdim
etilgan ma’lumotlarda kо‘proq SQL buyruqlarini о‘z ichiga olsa,
ularning barchasi bir
vaqtning о‘zida bajariladi, natijada SQL in’ektsiyasi sodir bо‘ladi.
PHP kodidagi SQL injection zaifliklari bir necha sabablarga kо‘ra yuzaga kelishi
mumkin, jumladan:
1. Notо‘g‘ri kirish tekshiruvi: SQL sо‘rovlarida foydalanishdan oldin foydalanuvchi
kiritgan ma’lumotlarini tekshirish va sanitarizatsiya qilmaslik SQL in’ektsiyasi
zaifliklarining keng tarqalgan sababidir. Agar foydalanuvchi kiritgan ma’lumotlar tо‘g‘ri
tasdiqlanmagan bо‘lsa, tajovuzkorlar zararli SQL kodini kiritish
orqali ushbu zaiflikdan
foydalanishlari mumkin.
2. SQL sо‘rovlarida foydalanuvchi kiritishini birlashtirish: Agar foydalanuvchi
tomonidan taqdim etilgan ma’lumotlar tо‘g‘ridan-tо‘g‘ri SQL sо‘rovlariga tо‘g‘ri
sanitarizatsiya qilinmasdan yoki parametrlashsiz birlashtirilsa, bu SQL in’ektsiyasi
zaifliklariga olib kelishi mumkin. Buning о‘rniga, SQL kodini foydalanuvchi kiritishidan
ajratish uchun tayyorlangan bayonotlar yoki parametrlangan sо‘rovlardan
foydalanish
kerak.
3. Parametrlarni bog‘lashning yо‘qligi: PHP da dinamik SQL sо‘rovlarini bajarishda
ularni sо‘rovga tо‘g‘ridan-tо‘g‘ri kiritishdan kо‘ra ularni bog‘lash muhim ahamiyatga ega.
Parametrlarni bog‘lamaslik SQL in’ektsion hujumlari uchun eshikni ochiq qoldirishi
mumkin.
4. Ishonchsiz ma’lumotlar bazasi ulanishi: mysql_* funksiyalari kabi xavfsiz
bо‘lmagan yoki eskirgan ma’lumotlar bazasiga ulanish usullaridan foydalanish zaifliklarni
keltirib chiqarishi mumkin. Tayyor bayonotlar va parametrlangan sо‘rovlarni qо‘llab-
19
quvvatlaydigan PDO (PHP Data Objects) yoki MySQLi
kengaytmasi kabi xavfsiz
alternativalardan foydalanish tavsiya etiladi.
5. Xato haqida xabar berish: Batafsil xato xabarlari yoki SQL sо‘rovi xatolarini
foydalanuvchilarga kо‘rsatish tajovuzkorlarga qimmatli ma’lumotlarni taqdim etishi
mumkin. Ma’lumotlar bazasi tuzilishi yoki sо‘rovlari haqida nozik ma’lumotlarni oshkor
qilmasdan xatolarni tо‘g‘ri boshqarish va jurnalga kiritish juda muhimdir.
6. Imtiyozlarni boshqarishning etarli emasligi: PHP ilovasining ma’lumotlar bazasi
foydalanuvchisiga haddan tashqari ma’lumotlar bazasi imtiyozlarini berish muvaffaqiyatli
SQL in’ektsion hujumining ta’sirini oshirishi mumkin. Ma’lumotlar bazasi
foydalanuvchisi kerakli operatsiyalarni bajarish uchun faqat kerakli ruxsatlarga ega
bо‘lishini ta’minlab, eng kam imtiyozlar printsipiga amal qilish kerak.