SQL Injection nima va undan qanday himoyalanish mumkin? To‘liq tushuncha va real kod misollari
December 01, 2025
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:
-
Foydalanuvchi kiritishi to‘g‘ridan-to‘g‘ri SQL so‘rovga qo‘shiladi
-
Backend inputni tekshirmaydi
-
Hujumchi SQL sintaksisini buzib, qo‘shimcha buyruqlar qo‘shadi
-
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.
Tags:
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