Sql inyeksiya va undan ximoyalanish


Download 163.39 Kb.
Pdf ko'rish
bet2/2
Sana12.12.2021
Hajmi163.39 Kb.
#180001
1   2
Bog'liq
MBX Mustaqil ish

SELECT * FROM card WHERE id=1- IF(MID(VERSION(),1,1) '5', SLEEP(15), 0)


Zanjirli so’rovga asoslangan SQL 

inyeksiya.

Ushbu turdagi SQL inyeksiyani amalga oshirsh uchun ma’lumotlar bazasi



zanjirli so’rovlarni qo’llab quvvatlashi kerak bo’ladi. Bunday turdagi

so’rovlarni yangi versiyadagi ma’lumotlar bazalari qo’llab quvvatlamaydi.

Ammo bu turdagi hujum eng xavflisi hisoblanadi. Uning yordamda ma’lumotlar

bazasida istalgan ishni qilish mumkin. Ma’lumotlarni o’chirish, o’zgartrish,

ma’lumotlar bazasini o’chirib tashlash va hattoki operatsion tizimdan ham

foydalanish mumkin. Bunga misol qilib quyidagi kodni keltirish mumkin:

SELECT * FROM table_name WHERE smth = ' ';DROP database;--’;




Zanjirli so’rovga asoslangan SQL 

inyeksiya.

SQL ning maxsus imkonyatlari mavjud. exec xp_cmdshell komandasi orqali SQL



so’rov yordamida operatsion tizim imkoniyatlaridan foydalanish mumkin. Bu

imkoniyat odatda o’chirib qo’yilgan holda bo’ladi. Lekin uni yoqib qo’yish

orqali maxsus ishlarni bajrish mumkin. Masalan BackUp nusxani olishni

avtomatlashtirish mumkin. Ammo bu imkoniyat anchagina xavfli hujumlarga

olib kelishi mumkin. SQL inyeksiyaga yo’l qo’yilganda zanjirli so’rov orqali

ushbu imkonyatdan foydalanilsa SQL bazasi turgan kompyuter yoki serverning

barcha imkoniyatlarini qo’lga kiritish mumkin. Bunda ham hamma

imkoniyatlarni qo’lga kiritish yoki kiritmaslik SQL server qaysi huquq bilan

ishlayotganiga bog’liq. Agar SQL server adminstartor nomidan daoliyat

yurutayotgan bo’lsa demak hujum natijasida server xavf ostida qolishi

mumkin.



SQL inyeksiyadan himoyalanish

SQL inyeksiya hujumiga zaiflikni avvalambor dinamik so’rov orqali bazaga



murojat qilish keltirib chiqaridi. Masalan:

$id;



$query = “SELECT * FROM tablename WHERE id –'” + $id + “’;”

Bunday hujumdan himoyalanish uchun maxsus belgilarni almashtirib qo’yish



mumkin. Masalan ( ' ) qo’shtirnoq belgisini va (;) nuqtali bergul belgilarini

xuddi shunday tasvirlanadigan ammo dastur boshqa belgi deb tushunadigan

belgilarga almashtirib qo’yish mumkin. 




SQL inyeksiyadan himoyalanish

Hujumdan himoyalanishning eng samarali yo’li tayyorlangan so’rovlardan



foydalanish orqali ma’lumotlar bazasiga murojat qilish hisoblanadi. Bunday

so’rovga quyidagini misol qilib keltirish mumkin:

$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, 



?, ?)");

$stmt->bind_param("sss", $firstname, $lastname, $email);

Yoki


mysql> PREPARE stmt1 FROM 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse’;

mysql> SET @a = 3;



mysql> SET @b = 4;

mysql> EXECUTE stmt1 USING @a, @b;




SQL inyeksiyadan himoyalanish

Inson omilini hisobga oladigan bo’lsak hamma joyda ham



tayyorlangan himoya usulini qo’llash yoddan ko’tarilishi

mumkin. Shuning uchun himoyaning ikki turini ham

qo’llagan ma’qul.



Xulosa

SQL inyeksiya yordamida ma’lumotlar bazasi maxfiyligiga, ishonchliligiga, 



butunligiga va operatsion tizim boshqaruvini yo’qotishga sabab bo’lishi

mumkin ekan.



Download 163.39 Kb.

Do'stlaringiz bilan baham:
1   2




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling