Cookie-fayllar orqali yuborish: Buzg'unchi SQL bayonotida ishlatiladigan cookie-faylga zararli
kodni kiritishi mumkin, bu ularga ma'lumotlar bazasiga kirish
yoki manipulyatsiya qilish
imkonini beradi.
Foydalanuvchi-agent orqali in'ektsiya: Buzg'unchi zararli kodni SQL bayonotida ishlatiladigan
foydalanuvchi-agent qatoriga kiritishi mumkin, bu ularga ma'lumotlar bazasiga kirish yoki
manipulyatsiya qilish imkonini beradi.
Ko'r-ko'rona SQL in'ektsiyasi: Buzg'unchi hech qanday ko'rinadigan xato xabarlarisiz shakl
maydoni yoki parametriga zararli kodni kiritishi mumkin, bu ma'lumotlar bazasidan
ma'lumotlarni olish uchun ishlatilishi mumkin.
Ittifoqqa asoslangan SQL in'ektsiyasi: Buzg'unchi UNION
operatori yordamida SQL
bayonotiga zararli kodni kiritishi mumkin, bu ikki yoki undan ortiq SELECT bayonotlarining
natijalarini birlashtirish va ma'lumotlar bazasidan ma'lumotlarni chiqarish uchun ishlatilishi
mumkin.
Xatoga asoslangan SQL in'ektsiyasi: tajovuzkor SQL bayonotiga zararli kodni kiritishi
mumkin, bu esa jadval va ustun nomlari kabi ma'lumotlar bazasi tuzilishi haqidagi ma'lumotlarni
ochib berishi mumkin.
SQL inyeksion hujumlarining oldini olish uchun foydalanuvchi kiritgan ma'lumotlarni to'g'ri
tekshirish va foydalanuvchi kiritgan ma'lumotlar ilova tomonidan to'g'ri ishlanishi va SQL kodi
sifatida talqin qilinmasligiga ishonch hosil qilish uchun tayyorlangan bayonotlar yoki
parametrlangan so'rovlardan foydalanish muhim ahamiyatga ega.
Bundan tashqari, eng kam
imtiyozlardan foydalanish muhim, boshqacha qilib aytganda, foydalanuvchiga ma'lumotlar
bazasiga minimal kirish huquqini berish kerak, bu bilan tajovuzkor unga kirsa ham,
zarar
etkazish uchun katta kuchga ega bo'lmaydi.
SQL inyeksion - bu ma'lumotlar bazasini yo'q qilishi mumkin bo'lgan kod kiritish usuli.
SQL inyeksion Web-buzg'unchilikning eng keng tarqalgan usullaridan biridir.
SQL inyeksion - bu zararli kodni SQL bayonotlarida Web-sahifa kiritish orqali joylashtirish.
SQL in'ektsiyasi odatda foydalanuvchidan foydalanuvchi nomi/foydalanuvchi identifikatori kabi
ma'lumotlarni so'raganingizda sodir bo'ladi va ism/id o'rniga foydalanuvchi sizga ma'lumotlar
bazasida bilmagan holda ishga tushadigan SQL bayonotini beradi.
Tanlangan satrga o'zgaruvchini (txtUserId) qo'shish orqali SELECT iborasini yaratadigan
quyidagi misolga qarang. O'zgaruvchi foydalanuvchi kiritishidan olinadi (getRequestString):
txtUserId = getRequestString("UserId");
txtSQL = "SELECT * FROM Users WHERE UserId = " + txtUserId;
1=1 ga asoslangan SQL in'ektsiyasi har doim to'g'ri
Yuqoridagi misolga yana qarang. Kodning asl maqsadi foydalanuvchi identifikatori bilan
foydalanuvchi tanlash uchun SQL bayonotini yaratish edi.
Agar foydalanuvchining "noto'g'ri" kiritishiga to'sqinlik qiladigan hech narsa bo'lmasa,
foydalanuvchi quyidagi kabi "aqlli" kiritishni kiritishi mumkin:
Foydalanuvchi IDsi: 105 YOKI 1=1
Keyin, SQL bayonoti quyidagicha ko'rinadi:
Hisoblashda SQL injection - bu ma'lumotlarga asoslangan ilovalarga hujum qilish uchun
ishlatiladigan kodni kiritish usuli bo'lib, unda zararli SQL bayonotlari bajarish uchun kirish
maydoniga kiritiladi (masalan, ma'lumotlar bazasi tarkibini tajovuzkorga tashlash uchun).
SQL in'ektsiyasi ilovaning dasturiy ta'minotidagi xavfsizlik zaifligidan foydalanishi kerak,
masalan, foydalanuvchi kiritgan ma'lumotlar SQL bayonotlariga o'rnatilgan
satrli chiqish
belgilari uchun noto'g'ri filtrlangan yoki foydalanuvchi kiritgan ma'lumotlar kuchli kiritilmagan
va kutilmagan tarzda bajarilgan bo'lsa. SQL in'ektsiyasi asosan Web-saytlar uchun hujum vektori
sifatida tanilgan, ammo har qanday turdagi SQL ma'lumotlar bazasiga hujum qilish uchun
ishlatilishi mumkin.
SQL injection hujumlari tajovuzkorlarga identifikatorni soxtalashtirish, mavjud ma'lumotlarni
buzish, tranzaktsiyalarni bekor qilish yoki balanslarni o'zgartirish kabi rad etish muammolarini
keltirib chiqarishi, tizimdagi barcha ma'lumotlarni to'liq
oshkor qilish imkonini beradi,
ma'lumotlarni yo'q qiladi yoki boshqa yo'l bilan mavjud bo'lmaydi va ma'murga aylanadi.
ma'lumotlar bazasi serveri.
2012 yilgi tadqiqotda o'rtacha Web-ilova oyiga to'rtta hujum kampaniyasini qabul qilgani va
chakana sotuvchilar boshqa sohalarga qaraganda ikki baravar ko'p hujumlar olgani kuzatildi.
Bizning kunimizni chindan ham buzishi mumkin bo'lgan son-sanoqsiz hujumlarda SQL Injection
juda alohida o'ringa loyiqdir. Bu eng ko'p ishlatiladigan Web-tizimlarni buzish usullaridan
biridir. Ular ko'plab xakerlik vositalarida (masalan, sqlmap) qurollangan. Shu qadar ko'pki, bu
vositalar hatto malakali bo'lmagan xakerlarga ham o'ta halokatli hujumlarni amalga oshirishga
yordam beradi.
Muxtasar qilib aytganda, inyeksiya hujumchilari dastur mantig'iga o'zboshimchalik bilan kod
kiritishga intilishadi. Agar ular muvaffaqiyatli bo'lsa, ushbu kod dastur ruxsatnomalari va
xavfsizlik rollari yordamida bajariladi. Ushbu hujumlar masofaviy kodni bajarish hujumlarining
(RCE) kengroq toifasiga kiradi. Ya'ni, kodni yuklash (ikkilik yoki skript) va keyin uni bajarish
uchun serverni aldash.
Inyeksiya hujumlari uzoq vaqtdan beri OWASP-ning birinchi o'ntaligida xavfli bo'lgan va
shunday bo'lishi kerak. Yaxshi ishlab chiqilgan hujumlar dastur ma'lumotlarini
osongina
o'zgartirishi va hatto ularning izlarini o'chirishi mumkin. SQL in'ektsiyasi bu tajovuzkor dastur
tomonidan ishlatiladigan SQL bandlarini o'zgartirishga va buzishga harakat qilganda.
Bizda allaqachon Java dasturlashda uning ba'zi jihatlarini o'z ichiga olgan o'quv qo'llanma
mavjud. Ushbu qo'llanmada biz SQL Injection nima ekanligini biroz ko'proq o'rganamiz. Bu
qanday ishlaydi va nima uni juda xavfli qiladi. Biz uning toifalari va chalkashlik usullarini ko'rib
chiqamiz va uni qanday tuzatishni ko'rsatamiz.
SQL Injection haqida. Hackerlarga tashkilotlardan ma'lumotlarni o'g'irlash imkonini beruvchi
ko'plab zaifliklar mavjud va SQL Injection ulardan biri. Bu, ehtimol, bugungi kunda
qo'llaniladigan eng keng tarqalgan amaliy qatlam hujum usullaridan biridir. Agar Web-ilovani
noto'g'ri kodlash amalga oshirilsa, xaker SQL buyruqlarini kiritishi mumkin. SQL buyruqlaridan
foydalangan holda xaker ma'lumotlaringizni o'g'irlashi, ma'lumotlaringizni o'zgartirishi va
ma'lumotlaringizni butunlay o'chirib tashlashi mumkin.
Oddiy so'zlar bilan aytganda, SQL in'ektsiyasi zararli foydalanuvchilar SQL buyruqlarini
Web-sahifa kiritish orqali SQL bayonotiga kiritishi mumkin bo'lgan
texnikadan boshqa narsa
emas va bu kirish Web-ilovaning xavfsizligini buzishi mumkin. Endi biz ASP .NET Web-
saytlarida SQL Injection qanday amalga oshirilishi mumkinligini tushunamiz.
Keling, bir misol keltiraylik. Aytaylik, sizning ma'lumotlar bazangizda quyidagi kabi kirish
jadvali mavjud:
1.
Dostları ilə paylaş: