← Veb ilovalar xavfsizligi
MODUL 07 / DARS 01

SQL injection va parametrli so‘rovlar

Ma’lumotni SQL buyruqdan ajrating.

45 daqiqa Python 3

Muammo ildizi

SQL matnini foydalanuvchi satri bilan birlashtirish ma’lumotni query sintaksisiga aylantirishi mumkin. Qora ro‘yxatdagi belgilarni olib tashlash umumiy himoya emas. Parametrli query SQL tuzilmasi va qiymatlarni ajratadi.

To‘g‘ri misol

SQLite’da WHERE name = ? va alohida tuple ishlatiladi. Django ORM odatiy filterlarda qiymatlarni parametr qiladi. Jadval yoki ustun nomini parametr o‘rniga berib bo‘lmaydi; ular oldindan belgilangan allowlist orqali tanlanadi. Raw SQL uchun ham ayni qoida amal qiladi.

Xavfsiz sinov

Dars faqat xotiradagi, sintetik SQLite bazasini yaratadi. Maxsus apostrofli ism ham oddiy ma’lumot bo‘lib qolishini tekshiring. Bazaga minimal huquq bering, xatoda query yoki ulanish sirlarini foydalanuvchiga chiqarmang. Input validatsiya parametrli query’ga qo‘shimcha qatlam, uning o‘rnini bosmaydi.

Python’da ko‘rib chiqamiz

import sqlite3
db = sqlite3.connect(":memory:")
db.execute("CREATE TABLE users (name TEXT)")
db.executemany("INSERT INTO users VALUES (?)", [("ali",), ("vali",)])
query = "ali"
rows = db.execute("SELECT name FROM users WHERE name = ?", (query,)).fetchall()
print(len(rows))
db.close()

Misolni

Mustaqil mashq

Sintetik bazaga apostrofli ism kiriting va aynan shu ismni parametr bilan toping. Query satrini birlashtirmang. Mavjud bo‘lmagan ism 0 natija berishini tekshiring.

Chuqurroq o‘rganing

Rasmiy hujjatni ochish ↗
O‘QING → O‘ZGARTIRING → SINANG

Python ish maydoni

.py

Kod brauzeringizda Web Worker orqali bajariladi. Serverga yuborilmaydi. Standart kutubxona bilan ishlang; lokal shell va host fayllari mavjud emas.

● ● ●sql-parameters.pyPython 3.14
Muhit ishga tushirishda yuklanadi
NATIJA
Kod natijasi shu yerda ko‘rinadi.
JAVOBI TEKSHIRILADIGAN TOPSHIRIQ

Natijani tahlil qiling

ali uchun nechta yozuv qaytadi?

Yordamchi ishora

Bazaga bitta ali yozilgan.

Python misolini hisobsiz ham bajara olasiz. Javobni tekshirish va natijani saqlash uchun hisobga kiring.

Hisobga kirish

Bu tekshiruv javob mosligini baholaydi. Mustaqil mashq va loyiha sifatini dars mezonlari bilan alohida tekshiring.

BILIMINGIZNI MUSTAHKAMLANG

Dars testi

To‘g‘ri javob bering. Qayta urinish mumkin; eng yaxshi natijangiz saqlanadi.

1. SQL qiymati qanday uzatiladi?
Test uchun hisobga kirish
O‘Z SO‘ZINGIZ BILAN YOZING

Shaxsiy konspekt

Tushunganlaringiz, savollaringiz va keyingi amaliyotingiz. Parol yoki token yozmang.

Konspekt uchun hisobga kirish