SQL injection - web tətbiqlərində ən qədim və ən təhlükəli açıqdır. Hacker forma sahəsinə xüsusi SQL kodu daxil edərək verilənlər bazasından məlumat oğurlaya, dəyişdirə və ya silmək imkanı qazana bilər.
SQL injection necə işləyir?
Sadə nümunə
Login formasında istifadəçi adı: admin OR 1=1 --
SQL: SELECT * FROM users WHERE username = admin OR 1=1 -- AND password = ...
"1=1" həmişə doğru → admin daxil olur şifrəsiz.
UNION-based injection
Hacker mövcud sorğuya başqa SQL əlavə edir: 1 UNION SELECT password FROM users - DB-dən bütün şifrələri oxuyur.
SQL injection növləri
In-band SQLi
Hacker brauzerdə birbaşa nəticəni görür. Ən asan aşkarlanan növ.
Blind SQLi
Nəticə görsənmir, lakin TRUE/FALSE sorğular ilə hacker informasiya toplayır - "is admin password starts with A?" və s.
Time-based blind SQLi
Hacker SLEEP(5) sorğusu inject edir - server 5 saniyə cavab vermədisə, şərt doğrudur.
Qoruma necə edilir?
1. Prepared Statements
Ən təsirli müdafiə. SQL strukturu və parametr ayrılır:
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?");
$stmt->execute([$id]);2. ORM istifadə
Laravel Eloquent, Doctrine - avtomatik SQL injection qoruması verir.
3. Input validation
Yalnız gözlənilən simvolları qəbul edin. ID rəqəm olmalıdır - filter_var($id, FILTER_VALIDATE_INT).
4. Escape funksiyaları
Köhnə kod üçün mysqli_real_escape_string. Lakin prepared statement daha etibarlıdır.
WordPress-də SQL injection qoruması
$wpdb->prepare()
$wpdb->prepare("SELECT * FROM $wpdb->posts WHERE ID = %d", $id);%d (rəqəm), %s (string), %f (float) placeholder-lar avtomatik escape edir.
Bu plaginlər SQLi açığı yarada bilər
- Köhnə form plaginləri (Contact Form, Quiz)
- Search plaginləri
- Custom DB sorğuları olan custom theme
SQL injection necə test etmək olar?
Manuel test
Forma sahəsinə ) OR (1=1 daxil edin. Sayt xəta verirsə və ya unexpected nəticə qaytarırsa - SQLi açığı var.
SQLMap aləti
Open-source pen-test aləti - avtomatik SQLi açıqlarını aşkar edir. Yalnız öz saytınızda istifadə edin.
WAF qoruması
ModSecurity
Server səviyyəsində - Hostinq.az-da hazır aktivdir. SQL injection nümunələrini avtomatik bloklayır.
Cloudflare WAF
Edge səviyyəsində - bütün hosting tipləri üçün uyğun. Pro planda OWASP qaydaları.
Hack olmuşsa nə etmək?
- Saytı offline et (.htaccess deny)
- Bütün admin və DB şifrələrini dəyişin
- Backup-dan restore (hack öncəsi)
- Bütün plaginləri yenilə
- Code review - hansı plagin/file açıq idi?
Hostinq.az hosting - ModSecurity + Cloudflare WAF + gündəlik malware skanı.