SQL Injection va Python
1. SQL Injection haqida tushuncha
SQL Injection nima?
SQL Injection — bu xakerlar tomonidan dasturga SQL so‘rovlarining o‘zgartirilgan ko‘rinishini kiritib, ma’lumotlar bazasiga noqonuniy kirishni amalga oshirish texnikasi.
Oddiy misol:
Agar foydalanuvchi parol o‘rniga ' OR '1'='1
kiritgan bo‘lsa:
Bu holatda WHERE
shartlari har doim TRUE
bo‘ladi va barcha foydalanuvchilar ma'lumotlari qaytariladi.
SQL Injectionning turlari
Classic Injection: To‘g‘ridan-to‘g‘ri SQL so‘roviga kiritmalar qo‘shish.
Blind Injection: Ma’lumotlarni aniqlash uchun mantiqiy shartlar (TRUE/FALSE) ishlatiladi.
Union-based Injection: Boshqa jadval yoki ma’lumotlarni olish uchun
UNION
ishlatiladi.Time-based Injection: Tizim javob berish vaqtiga asoslangan test usuli.
2 Python va SQL Injection
Oddiy SQL Injection xavfi Python-da
Agar foydalanuvchi kirish ma'lumotlari to'g'ridan-to'g'ri SQL so'roviga qo'shilsa, bu SQL Injectionga olib kelishi mumkin.
Misol (xavfli kod):
Injection misoli:
Foydalanuvchi
username
o'rniga' OR '1'='1
kiritadi.
SQL Injectiondan himoyalanish
Himoyalanish uchun quyidagi usullardan foydalaning:
Tayyorlangan so‘rovlar (Parameterized Queries)
Parameterized queries SQL Injectionning oldini oladi, chunki foydalanuvchi kiritmalari to'g'ridan-to'g'ri SQL so'roviga qo'shilmaydi.
Misol:
ORM (Object-Relational Mapping) ishlatish
ORM'lar, masalan, SQLAlchemy yoki Django ORM, SQL Injectiondan himoyalanish uchun qulay vositalar taklif qiladi.
SQLAlchemy Misol:
Kiruvchi ma'lumotlarni tekshirish va sanitizatsiya qilish
Foydalanuvchi kiritmalarini tekshiring va kerakli formatga o‘tkazing.
Potensial xavfli belgilarni o‘chirish (
;
,--
,'
,"
,OR
,AND
).
Misol:
Ma'lumotlar bazasi xavfsizligini oshirish
Cheklangan huquqlar: Foydalanuvchi ma’lumotlar bazasiga faqat kerakli huquqlarga ega bo‘lishi kerak.
Xatoliklarni yashirish: Ma'lumotlar bazasi bilan bog‘liq xatoliklar foydalanuvchiga ko'rsatilmasligi kerak.
Loglash: Shubhali kiritmalarni va so'rovlarni loglash.
3 Amaliy misollar
Xavfsiz kirish tizimi
ORM orqali xavfsiz ishlash
SQLcAlchemy yordamida:
Flask va SQL Injection xavfsizligi
Flask ilovasida SQL Injectiondan himoyalanish:
Mavzular ro‘yxati shularni mustaqil urgaib chiqing bu sizga kerak buladi.
1. SQL Injection asoslari
SQL Injection nima? SQL Injectionning tarixi va rivojlanishi SQL Injectionning ishlash prinsipi SQL Injection turlari:
Classic Injection
Union-based Injection
Boolean-based Blind Injection
Time-based Blind Injection
2 SQL Injection xavfi
SQL Injectionning oqibatlari Hujum misollari:
Kirish ma’lumotlarini buzish
Ma’lumotlar bazasidagi barcha ma’lumotlarni olish
Ma’lumotlarni o‘zgartirish yoki o‘chirish 2.3. SQL Injectionni aniqlash usullari
3. Python va SQL Injection
Python bilan SQL so‘rovlarini bajarish (xavfli yondashuv) Python-dagi ma’lumotlar bazasi modullari:
SQLite (
sqlite3
)MySQL (
pymysql
yokimysql-connector
)PostgreSQL (
psycopg2
) SQL Injection uchun xavfli kod misollari
4. SQL Injectiondan himoyalanish usullari
Parametrik so‘rovlar (Parameterized Queries) Tayyorlangan bayonotlar (Prepared Statements) Kiruvchi ma’lumotlarni tekshirish va sanitizatsiya qilish ORM (Object-Relational Mapping) ishlatishning afzalliklari:
SQLAlchemy
Django ORM
5. Ma’lumotlar bazasi xavfsizligi
Cheklangan foydalanuvchi huquqlarini o‘rnatish Ma’lumotlar bazasi xatoliklarini yashirish Loglarni kuzatish va shubhali harakatlarni qayd qilish Proksi va shifrlangan ulanishlarni ishlatish
6. SQL Injectiondan himoyalangan dastur yaratish
Oddiy Python CLI ilovasi: Xavfsiz kirish tizimi Flask yordamida xavfsiz RESTful API yaratish Django yordamida xavfsizlikni ta’minlash
7. Amaliy hujum va himoyalanish usullari
SQL Injection hujumini sinash uchun vositalar:
SQLMap
Burp Suite SQL Injection hujumlarini aniqlash:
Xatolikni ko‘rsatish
Oddiy
TRUE/FALSE
testlar Python yordamida SQL Injection testlari yozish
8. Veb-ilovalarda xavfsizlik
CSRF va SQL Injection o‘rtasidagi farq WAF (Web Application Firewall) yordamida himoyalanish OWASP ning SQL Injectionga oid tavsiyalari
Last updated