1.7-rasm sql inyeksiya
2.2 Web dasturlarni SQL inyeksiyadan himoya qilish usullari
Ammo bularning barchasini tabiiy ravishda oldini olish mumkin. Buning uchun siz qila olasiz filtrlardan foydalaning,ishlab chiqaruvchilar tomonidan taqdim etiladi. Siz o'zingizning echimingizni topishingiz mumkin, masalan, barchasini almashtirishingiz mumkin,qo'shtirnoq (agar bo'lsa) SQL biz bitta so'rovlardan foydalanamiz) yoki aksincha. Kirish kerak bo'lsa, siz faqat harflar va @ tanklar bilan foydalanishga ruxsat berishingiz mumkin,elektron manzil. Va marvaridda hayratlanarli narsa bor,B quote () funktsiyasi DBI :: DBD modulida, bu sizning so'rovingizni muvaffaqiyatli bajaradi SQL. Ko'p echimlar mavjud, sizga shunchaki kerak,foyda olish. Aks holda, nega bularning barchasi ..
Fikr juda sodda - so'rovlar va ma'lumotlar ma'lumotlar bazasi serveriga alohida-alohida yuboriladi Hammasi shu.
SQL injection muammosining ildizi kod va ma'lumotlarni aralashtirishdir.
Aslida, bizning SQL so'rovimiz qonuniy dastur hisoblanadi . Biz bunday dasturni dinamik ravishda yaratib, tezlik bilan bir necha ma'lumotlarni qo'shamiz. Shunday qilib, bu ma'lumotlar dastur kodiga to'sqinlik qilishi va hatto uni o'zgartirishi mumkin, chunki har bir SQL injection misoli uni ko'rsatadi (PHP/MySQL-da barcha misollar):
$expected_data = 1;
$query = "SELECT * FROM users where id=$expected_data";
muntazam so'rovlar ishlab chiqaradi
SELECT * FROM users where id=1
bu kod
$spoiled_data = "1; DROP TABLE users;"
$query = "SELECT * FROM users where id=$spoiled_data";
zararli bir ketma-ketlik hosil qiladi
SELECT * FROM users where id=1; DROP TABLE users;
Ma'lumotlar to'g'ridan-to'g'ri dastur organiga qo'shilamiz va dasturning bir qismi bo'lib qoladi, shuning uchun ma'lumotlar dasturni o'zgartirishi va qabul qilinadigan ma'lumotlarga bog'liq holda biz odatdagi chiqdi yoki jadvalni ishlatamiz. o'chirilgan.
Tayyorlangan bayonotlarda biz dasturimizni o'zgartirmagan holda, u buzilmasdan qolaveradi Bu nuqta.
Avval serverga dasturini yubormoqdamiz
$db->prepare("SELECT * FROM users where id=?");
bu erda ma'lumotlar parametr yoki er ushlagichi deb ataladigan ba'zi o'zgaruvchilar bilan almashtiriladi.
Shunga o'xshash so'rov serverga yuborilganligini, undagi ma'lumotlarni olmasligini unutmang! Keyin biz ma'lumotlarni ikkinchi so'roviga yuboramiz, asosan so'rovdan ajratiladi:
$db->execute($data);
shuning uchun dasturimizni o'zgartira olmaydi va hech qanday zarar qilmaydi Juda sodda - bu emasmi?
Shunga qaramasdan, har doim har doim emas, , siz bir er ushlagichidan foydalanmoqdasiz, tayyorlangan bayonot sifatida ishlov berildi .
Tutqich - kelajakda qayta ishlash uchun haqiqiy ma'lumotni almashtirish uchun umumiy fikrdir (masalan, printf () ga qarang). Tayyor bayonot faqatgina bitta to'plamdir.
Tayyorlangan bayonotni taqlid qilishlari mumkin bo'lgan holatlar (ayniqsa PHPda PDO uni bajarishi mumkin) va so'rovlar aslida ma'lumotlar bilan birga tuzilgan va bitta so'rovda serverga yuborilgan. Biroq, bu yondashuv teng darajada himoyalangan ekanligini tushunishimiz kerak, chunki har bir bit ma'lumot turi turiga qarab to'g'ri formatlangan va shuning uchun hech qanday noto'g'ri narsa bo'lishi mumkin emas.
Har bir qo'llanmada har doim qoldirilgan narsalarni qo'shish kerak bo'lgan yagona narsa:
Tayyorlangan bayonotlar faqat ma'lumotlar ni himoya qilishi mumkin, ammo dasturni o'zi himoya qila olmaydi . Shunday qilib, biz, masalan, dinamik identifikatori ni qo'shishimiz kerak, masalan, maydon nomi, masalan, tayyorlangan so'zlar bizga yordam bera olmaydi. yaqinda ni tushuntirdim, shuning uchun o'zimni takrorlamayman.
Xulosa
SQL in'ektsiya - SQL in'ektsion saytlaridan foydalanish va undan keyingi foydalanish uchun yaxshi va kuchli vositadir. Uning shubhasiz afzalliklari: qulay foydalanish, o'rnatilgan tegishli funktsiyalar. Jsql in'ektsiya bo'lishi mumkin eng yaqin do'st Veb-saytlarni tahlil qilishda Newbie.
Kamchiliklardan ma'lumotlar bazalarini tahrirlashning iloji yo'qligini qayd qildim (hech bo'lmaganda men ushbu funktsiyani topa olmadim. Barcha vositalar kabi grafik interfeysUshbu dasturning kamchiliklari skriptlarda foydalanishga qodir emasligini anglatadi. Shunga qaramay, ushbu dasturda ba'zi avtomatlashtirish mumkin - saytlarning massa sinovlari tufayli.
Foydalanilgan adabiyotlar
http://w3af.sourceforge.net/
http://www.acunetix.com/
Burp Suite – http://portswigger.net/burp/
http://sourceforge.net/projects/rips-scanner/
http://sourceforge.net/projects/securityscanner/
http://sqlmap.org/
nikto – http://cirt.net/nikto2
Do'stlaringiz bilan baham: |