Birlashmaga asoslangan SQL-in'ektsiyasi misoli : SQL qarshi tizimining eng keng tarqalgan turlaridan biri UNION operatoridan foydalanadi. Bu tajovuzkorga ikki yoki undan ortiq SELECT bayonotlarining natijalarini bitta natijaga birlashtirishga imkon beradi. Texnika birlashmaga asoslangan SQL in'ektsiyasi deb nomlanadi .
Quyida ushbu texnikaning namunasi keltirilgan. Acunetix tomonidan joylashtirilgan qasddan zaif veb-sayt testphp.vulnweb.com veb-sahifasidan foydalanadi .
Quyidagi HTTP so'rovi qonuniy foydalanuvchi yuboradigan oddiy so'rovdir:
GET http://testphp.vulnweb.com/artists.php?artist=1 HTTP/1.1
Host: testphp.vulnweb.com
artistParametr SQL Injection zaif bo'ladi. Quyidagi foydali yuk mavjud bo'lmagan yozuvni qidirish uchun so'rovni o'zgartiradi. URL so'rovlar satridagi qiymatni quyidagiga o'rnatadi -1. Albatta, bu ma'lumotlar bazasida mavjud bo'lmagan boshqa har qanday qiymat bo'lishi mumkin. Biroq, manfiy qiymat yaxshi taxmindir, chunki ma'lumotlar bazasidagi identifikator kamdan-kam salbiy son hisoblanadi.
SQL Injection-da UNIONoperator odatda zararli SQL so'rovini veb-dastur tomonidan boshqarilishi kerak bo'lgan asl so'rovga qo'shish uchun ishlatiladi. AOK qilingan so'rov natijasi asl so'rov natijasi bilan qo'shiladi. Bu tajovuzkorga boshqa jadvallardan ustun qiymatlarini olish imkoniyatini beradi.
GET http://testphp.vulnweb.com/artists.php?artist=-1 UNION SELECT 1, 2, 3 HTTP/1.1
Host: testphp.vulnweb.com
Quyidagi misol, ushbu qasddan himoyalanmagan saytdan yanada mazmunli ma'lumotlarni olish uchun SQL Ineksiya(Injection) foydali yukidan qanday foydalanish mumkinligini ko'rsatadi.
GET http://testphp.vulnweb.com/artists.php?artist=-1 UNION SELECT 1,pass,cc FROM users WHERE uname='test' HTTP/1.1
Host: testphp.vulnweb.com
Bu SQL Injection hujumlarini oldini olishning yagona ishonchli usuli bu kirish tekshiruvi va parametrlangan so'rovlar, shu jumladan tayyorlangan bayonotlar. Dastur kodi hech qachon kiritishni to'g'ridan-to'g'ri ishlatmasligi kerak. Ishlab chiquvchi nafaqat kirish formalari kabi veb-formadagi kirishlarni, balki barcha ma'lumotlarni sanitarizatsiya qilishi kerak. Ular bitta tirnoq kabi potentsial zararli kod elementlarini olib tashlashlari kerak. Shuningdek, ishlab chiqarish saytlaringizda ma'lumotlar bazasi xatolarining ko'rinishini o'chirib qo'yish yaxshi fikr. Ma'lumotlar bazasidagi xatolar SQL Injection yordamida ma'lumotlar bazangiz haqida ma'lumot olish uchun ishlatilishi mumkin.
Xulosa Xulosa qilib shuni aytish mumkinki, Bu SQL Injection hujumlarini oldini olishning yagona ishonchli usuli bu kirish tekshiruvi va parametrlangan so'rovlar, shu jumladan tayyorlangan bayonotlar. Dastur kodi hech qachon kiritishni to'g'ridan-to'g'ri ishlatmasligi kerak