SQL injection: necə işləyir və saytı necə qorumaq

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?

  1. Saytı offline et (.htaccess deny)
  2. Bütün admin və DB şifrələrini dəyişin
  3. Backup-dan restore (hack öncəsi)
  4. Bütün plaginləri yenilə
  5. Code review - hansı plagin/file açıq idi?

Hostinq.az hosting - ModSecurity + Cloudflare WAF + gündəlik malware skanı.

Paylaş: