SQL Injection nima va undan qanday himoyalanish mumkin? To‘liq tushuncha va real kod misollari

SQL Injection nima va undan qanday himoyalanish mumkin? To‘liq tushuncha va real kod misollari - ProblemStack.uz Blog Article
IbragimovQuvonchbek - ProblemStack.uz Profile
IbragimovQuvonchbek

December 01, 2025

3 min read 19 views

 

SQL Injection: Zamonaviy Web-dasturlarda Eng Keng Tarqalgan Xavfsizlik Zaifliklaridan Biri

SQL Injection (SQLi) — bu hujumchi foydalanuvchi kiritadigan ma’lumotlar orqali SQL so‘roviga zararli kod qo‘shishi va natijada ma’lumotlar bazasiga ruxsatsiz kirishi mumkin bo‘lgan xavfsizlik zaifligidir. Bu zaiflik OWASP Top 10’da uzoq yillardan beri yetakchi o‘rinlarda turadi.

U noto‘g‘ri yozilgan backend kod, filtrlanmagan input va sanitizatsiyasiz SQL so‘rovlari natijasida yuzaga keladi.


1. SQL Injection qanday ishlaydi?

SQL Injection odatda quyidagi jarayon bilan sodir bo‘ladi:

  1. Foydalanuvchi kiritishi to‘g‘ridan-to‘g‘ri SQL so‘rovga qo‘shiladi

  2. Backend inputni tekshirmaydi

  3. Hujumchi SQL sintaksisini buzib, qo‘shimcha buyruqlar qo‘shadi

  4. Ma’lumotlar bazasida zararli so‘rov bajariladi


2. Xavfli (vulnerable) misol — PHP + MySQL

Quyidagi kodda foydalanuvchi username va password kiritadi. Lekin input tozalash yo‘q:

<?php
// ❌ XAVFLI MISOL — SQL Injectionga juda ochiq
$username = $_POST['username'];
$password = $_POST['password'];

$sql = "SELECT * FROM users WHERE username = '$username' AND password = '$password'";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
    echo "Login successful!";
} else {
    echo "Wrong credentials!";
}
?>

Bu kod qanday yoriladi?

Hujumchi username maydoniga shunchaki quyidagini yozadi:

' OR '1'='1

Hosil bo‘ladigan SQL:

SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '';

'1'='1' doimo TRUE → hujumchi tizimga kiradi.


3. To‘g‘ri yechim: Prepared Statements (Parametrizatsiya)

SQL Injectionga qarshi eng kuchli himoya — Prepared Statements.

PHP PDO bilan xavfsiz variant:

<?php
// ✔️ XAVFSIZ MISOL — Prepared statements
$username = $_POST['username'];
$password = $_POST['password'];

$stmt = $conn->prepare("SELECT * FROM users WHERE username = :username AND password = :password");
$stmt->bindParam(':username', $username);
$stmt->bindParam(':password', $password);
$stmt->execute();

if ($stmt->rowCount() > 0) {
    echo "Login successful!";
} else {
    echo "Wrong credentials!";
}
?>

Bu yerda foydalanuvchi kiritgan ma’lumot hech qachon SQL sintaksisiga aralasholmaydi.


4. Python (Flask) misoli – xavfli va xavfsiz taqqoslash

❌ Xavfli:

# XAVFLI MISOL
username = request.form['username']
query = f"SELECT * FROM users WHERE username = '{username}'"
cursor.execute(query)

✔️ Xavfsiz:

# XAVFSIZ MISOL
username = request.form['username']
cursor.execute("SELECT * FROM users WHERE username = %s", (username,))

5. SQL Injection turlari

▶ Classic SQL Injection

Oddiy inputga zararli kod qo‘shish.

▶ Boolean-Based Blind SQL Injection

TRUE/FALSE javobi orqali ma’lumot chiqarish.

▶ Time-Based Blind SQL Injection

SLEEP() kabi funksiyalar orqali vaqt kechikishi bilan DB javobini aniqlash.

▶ Union-Based SQL Injection

UNION SELECT orqali qo‘shimcha ma’lumot ustunlarini chiqarish.

Masalan:

' UNION SELECT username, password FROM users --

6. Amaliy himoya strategiyalari

Prepared statements (eng muhim)
✔ Inputni tozalash (whitelist)
✔ ORM ishlatish (SQLAlchemy, Prisma, Hibernate)
✔ Xatolik xabarlarini foydalanuvchiga ko‘rsatmaslik
✔ Minimal ruxsatlar (least privilege)
✔ WAF ishlatish (ModSecurity)


7. Amaliy real-case log Example

Quyidagi web server logi SQL Injection hujumi bo‘lishi mumkinligini ko‘rsatadi:

/login?user=' OR 1=1--&password=123

Bu kabi xatti-harakatlarni IDS/IPS orqali aniqlash mumkin.


8. Xulosa

SQL Injection — hali ham dunyo bo‘yicha eng xavfli va eng ko‘p uchraydigan zaifliklardan biri. Ammo uni oldini olish juda sodda:

Hech qachon string biriktirib SQL yozmang
Doim parametrizatsiyalangan so‘rov ishlating

Aks holda, hujumchi sizning to‘liq ma’lumotlar bazangizni boshqarib olishi mumkin.

Share this article

Related Problems

Related Posts

🎣 Phishing hujumlari qanday ishlaydi? To‘liq professional tahlil

Kiberjinoyatchilar tomonidan eng ko‘p qo‘llaniladigan hujum usullaridan biri — phishing (“fishing” — ma’nosi: "qarmoqqa ilish"). Bu usulda hujumchi texnik ekspluatatsiya emas, balki inson psixologiyasidan foydalanadi. Shu sababli phishingga qarshi eng yaxshi himoya — xabardorlik. Ushbu maqolada phishingning ishlash mexanizmi, turli shakllari, real ssenariylar va unga qarshi samarali himoya choralarini tahlil qilamiz.

Nov 30, 2025

🌐 Tarmoq (Network) qanday ishlaydi: to‘liq qo‘llanma

Internet va ichki tarmoqlar hayotimizning ajralmas qismiga aylangan. Har bir qurilma, server yoki smartfon tarmoq orqali ma’lumot almashadi. Ushbu maqolada sizga tarmoqning asosiy tushunchalari, ishlash prinsiplari, protokollar, IP va MAC manzillari, routing, NAT, firewall va xavfsizlik jihatlari batafsil tushuntiriladi.

Nov 12, 2025

MAC (Media Access Control) manzili — toʻliq va amaliy qoʻllanma

MAC manzili (Media Access Control address) — tarmoq qurilmalarining link-layer (odatda Ethernet yoki Wi‑Fi) darajasidagi noyob identifikatori. Ushbu maqolada MAC manzili nima ekanligi, tuzilishi, turlari, qanday ishlashi, IP bilan farqi, sozlash va xavfsizlik jihatlari — hammasi amaliy misollar va buyruqlar bilan batafsil tushuntiriladi.

Nov 12, 2025

IP (Internet Protocol) — toʻliq va tushunarli qoʻllanma

Internetdagi qurilmalar bir-biri bilan muloqot qilish uchun IP (Internet Protocol) manzillaridan foydalanadi. Ushbu maqolada IP nima, qanday ishlaydi, IPv4 va IPv6 farqlari, subnetlash, NAT, DHCP, ARP, protokollar bilan munosabatlari va amaliy buyruqlar — hammasi bosqichma-bosqich tushuntiriladi. Maqola boshlovchilar va o‘rta darajadagi oʻquvchilar uchun moʻljallangan.

Nov 12, 2025