SQL Injection Hücumları və Müdafiə Yolları – Veb Təhlükəsizlikdə Ən Böyük Risk (2025)
SQL Injection nədir, necə işləyir və ondan necə qorunmaq olar? 2025-ci ilə uyğun müdafiə texnikaları, təhlükəsiz kod nümunələri, parametrizasiya və real risk ssenariləri ilə tanış olun.
SQL Injection nədir? Risklər, Müdafiə və Təhlükəsiz Kod Yazma (2025 Yenilənmiş)
Yenilənmə: 10 Sentyabr 2025
Qısa xülasə: Bu məqalədə SQL Injection (SQLi) təşəkkülü, onun nəticələri, risk modelləri və tətbiqçilər üçün praktik müdafiə üsulları izah olunur. Məqsəd — müdafiə və təhlükəsiz dizayn; zərərli istismar nümunələri paylaşılmır.
🔎 SQL Injection — qısa və aydın izah
SQL Injection (SQLi) — veb tətbiqin verilənlər bazasına göndərdiyi SQL sorğularında istifadəçi daxil olan dəyərləri lazımi şəkildə təmizləməməsi və ya parametrizasiya etməməsi nəticəsində, kənar istəklərin SQL sorğularına təsir göstərməsi vəziyyətidir. Bunun nəticəsində məlumat sızması, yetkisiz əməliyyatlar və tətbiqə tam nəzarət itirilməsi kimi ciddi zərərlər yarana bilər.
⚠️ Nə üçün SQLi təhlükəlidir?
- Məlumat sızması
- Avtorizasiya pozuntuları
- Məlumatların dəyişdirilməsi və məhv edilməsi
- Təşkilati risklər
Etik qeyd: Bu məqalə müdafiə məqsədi ilə yazılıb. Zərərli payload-lar və istismar addımları verilmir.
🧠 Təhlükə modeli (Threat Model)
- Hüquqlar və təsir
- Giriş vektoru
- Mühit və məhdudiyyətlər
- Ehtimal
✅ SQL Injection‑dan QORUNMA — əsas prinsiplər
- Parametrizasiya / Prepared statements
- ORM və ya query builder
- Input validation və output encoding
- Least privilege
- WAF və filtrasiya
- Logging və monitorinq
- CI/CD‑də təhlükəsizlik yoxlamaları
- Təlim və prosedurlar
🧩 Təhlükəsiz kod nümunələri (parametrizasiya)
PHP (PDO)
1
2
3
$pdo = new PDO(...);
$stmt = $pdo->prepare("SELECT * FROM users WHERE email = :email");
$stmt->execute(['email' => $userInputEmail]);
Python (pymysql)
1
cursor.execute("SELECT * FROM users WHERE email = %s", (user_email,))
Node.js (mysql2)
1
const [rows] = await db.execute("SELECT * FROM users WHERE email = ?", [email]);
Java (JDBC)
1
2
3
PreparedStatement ps = conn.prepareStatement("SELECT * FROM users WHERE email = ?");
ps.setString(1, userEmail);
ResultSet rs = ps.executeQuery();
🔧 Input validation & output handling
- Allow‑list formatları
- Length limiti
- Type checking
- Context‑specific encoding
🧪 Test və aşkarlama strategiyaları
- SAST
- DAST
- Manual code review
- Unit/integration testlər
- Logging və alerting
🏗 Arxitektura və infrastruktur
- Least privilege
- Separation of concerns
- Read‑only replikalar
- Encryption
- WAF
✅ Quick checklist
- SQL-lər parametrizə olunub?
- Input validation tətbiq olunub?
- DB hüquqları məhduddur?
- ORM düzgün qurulub?
- WAF və logging aktivdir?
- CI skanlar var?
- Təlimlər keçirilib?
👨🏫 Təlim və proseslər
- Secure coding təlimi
- Code review siyasəti
- CI/CD-də skanlar
- Incident response plan
- Post-incident təhlil
✋ Nəyi etməmək lazımdır
- Sadəcə
escape
etməklə kifayətlənmək - DB user-ə root hüquqlar vermək
- İstehsalatda test exploit-lər işlətmək
- Təkcə WAF-a güvənmək
Nəticə
SQLi təhlükəlidir, amma qarşısı alınandır — düzgün kodlama və təhlükəsiz arxitektura ilə.
Əlaqə və Təlimlər
📲 WhatsApp ilə əlaqə saxlayın — Kiber Təhlükəsizlik və OSI Model Hücumları üzrə təlim və mentorluq.
Qeyd: Bu məqalə yalnız tədris və müdafiə məqsədilə hazırlanıb.
📚 Oxşar Yazılar
🔐 Phishing Hücumu Nədir? Canlı Nümunələr və Qorunma Yolları
Sosial mühəndislik və e-mail ilə gələn təhdidlərin analizi.🥷 Kibertəhlükəsizlikdə Red Team və Blue Team nədir?
Hücum və müdafiə simulyasiyalarının real ssenarilərlə izahı.📶 İctimai Wi-Fi istifadə edərkən nələrə diqqət etməli?
Wi-Fi üzərindən edilən MITM, sniffing və spoofing hücumları.