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 74 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

Stack xotirasi tushunchasi: PWN va Binary Exploitation asoslari

Stack xotirasi — dastur ishlashi davomida eng muhim va ayni paytda eng xavfli xotira sohalaridan biridir. Ushbu maqolada stack qanday ishlashi, stack overflow nima ekanligi va nima sababdan u PWN hamda CTF muammolarida muhim rol o‘ynashi professional darajada tushuntiriladi. Maqola boshlovchilar va xavfsizlikka qiziquvchilar uchun mo‘ljallangan.

Dec 19, 2025

Steganografiya CTF Masalalarini Yechish Bo‘yicha To‘liq Professional Qo‘llanma

Steganografiya — oddiy ko‘ringan rasm, audio yoki fayl ichiga yashirilgan maxfiy ma’lumotlarni aniqlash san’atidir. Ushbu qo‘llanmada siz CTF musobaqalarida uchraydigan stego masalalarini tizimli ravishda qanday tekshirish, qaysi vositalarni qo‘llash va yashirin flagnni topishning eng samarali usullarini o‘rganasiz.

Dec 03, 2025

🎣 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