Universiteti jizzax filiali amaliy matematika fakulteti kompyuter ilmlar a dasturlashtirish kafedrasi



Yüklə 1,35 Mb.
Pdf görüntüsü
səhifə23/33
tarix02.06.2023
ölçüsü1,35 Mb.
#123007
1   ...   19   20   21   22   23   24   25   26   ...   33
KIBERXAVFSIZLIK

 
10-Amaliy: SQL injection. 
SQL in'ektsiyasi - bu ma'lumotlar bazasiga ruxsatsiz kirish yoki manipulyatsiya qilish uchun 
SQL bayonotiga zararli kodni kiritishni o'z ichiga olgan hujum turi. Bu yerda SQL in'ektsiya 
hujumlari qanday amalga oshirilishi mumkinligiga bir nechta misollar: 
Kirish tekshiruvi: tajovuzkor dastur tomonidan toʻgʻri tekshirilmagan kirish formasi kabi ariza 
maydoniga zararli kodni kiritishi mumkin. 
URL parametrlari orqali in'ektsiya: Buzg'unchi SQL bayonotida ishlatiladigan URL 
parametriga zararli kodni kiritishi mumkin, bu ularga ma'lumotlar bazasiga kirish yoki 
manipulyatsiya qilish imkonini beradi. 


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. 

Yüklə 1,35 Mb.

Dostları ilə paylaş:
1   ...   19   20   21   22   23   24   25   26   ...   33




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin