KateqoriyasızKibertəhlükəsizlik

SQL (SQL Injection) hücumları və müdafiə yolları

SQL Injection (SQLi) veb tətbiqetmələrində ən çox rast gəlinən təhlükəsizlik zəifliklərindən biridir. SQL injection, hücumçunun istifadəçi girişi və ya digər inputlar vasitəsilə zərərli SQL sorğularını tətbiqə daxil etməsi ilə baş verir. Bu, verilənlər bazasına icazəsiz daxil olmaq, məlumatları manipulyasiya etmək və ya hətta kritik məlumatları silmək kimi təhlükələrə yol açır.SQL injection, tətbiqetmənin istifadəçi tərəfindən daxil edilən məlumatları düzgün yoxlamaması və ya təmizləməməsi nəticəsində baş verir. Hücumçular, bu zəiflikdən istifadə edərək SQL sorğularını manipulyasiya edə və sistemin davranışını dəyişdirə bilər.

SQL Injection-in necə işlədiyini başa düşmək
Təsəvvür edin ki, bir veb tətbiqetməsi istifadəçidən istifadəçi adı və şifrə istədikdə, istifadəçi adının və şifrənin birbaşa SQL sorğusuna daxil edildiyi bir vəziyyət var. Məsələn 

SELECT * FROM users WHERE username = 'user' AND password = 'pass';

Əgər tətbiqetmə istifadəçi girişini yoxlamadan SQL sorğusunu yerinə yetirirsə, bir hücumçu istifadəçi adı və ya şifrəni belə daxil edə bilər

' OR 1=1 --

Aşağıdakı sorğu belə dəyişir

SELECT * FROM users WHERE username = '' OR 1=1 --' AND password = 'pass';

Bu sorğu SQL bazasında həmişə doğru olacaq, çünki 1=1 həmişə doğrudur və — isə SQL-də şərh qeydidir, buna görə də şifrə yoxlanmır. Nəticədə, istifadəçi sistemi uğurla daxil olur, heç bir şifrə daxil etmədən.

SQL Injection-in növləri
In-band SQL Injection: Bu növ SQL injection, birbaşa verilənlər bazasından məlumatların sızdırılması ilə əlaqəlidir. Bu növün ən yayılmış iki alt növü var:

Error-based SQL Injection: Hücumçu, verilənlər bazasından səhv mesajları alaraq məlumat əldə etməyə çalışır.
Union-based SQL Injection: Hücumçu, verilənlər bazasına bir neçə SELECT sorğusunu birləşdirərək məlumatları sızdırmağa çalışır.
Blind SQL Injection: Bu növdə, hücumçu verilənlər bazasından heç bir məlumat əldə etmir, lakin tətbiqetmənin cavabından məlumatlar əldə etməyə çalışır. Bu, SQL sorğularının nəticələrini birbaşa göstərməyən tətbiqetmələrdə baş verir.

Boolean-based Blind SQL Injection – Hücumçu SQL sorğularını dəyişdirərək tətbiqin səhv və ya doğru cavabları üzərindən məlumat çıxarır.

Time-based Blind SQL Injection – Hücumçu sorğulara vaxt əsaslı gecikmələr əlavə edərək cavabları analiz edir.

Out-of-Band SQL Injection – Bu növ, verilənlər bazasına daxil olmaq üçün digər kanalların istifadə edildiyi SQL injection tipidir. Məsələn, nəticələr birbaşa başqa bir serverə göndərilə bilər.

SQL injection ciddi təhlükəsizlik riskləri daşıyır

Verilənlərə icazəsiz daxil olma – Hücumçu, istifadəçi məlumatları, parollar və digər həssas məlumatlara daxil ola bilər.

Verilənlərin dəyişdirilməsi – Hücumçu məlumatları dəyişdirə bilər (məsələn, istifadəçi şifrələrini dəyişdirmək).
Verilənlərin silinməsi – Hücumçu verilənlər bazasındakı məlumatları silə bilər.
Yazılımın idarə edilməsi – Hücumçu tətbiqetmənin icazə verdiyi SQL sorğularını istifadə edərək tam idarəetmə əldə edə bilər.

SQL Injection-dan qorunma yolları
Prepared Statements (Parametrli sorğular) – SQL sorğularında dəyişən məlumatları parametrli şəkildə ötürmək, SQL injection-u əngəlləyir. Məsələn, PHP-də aşağıdakı şəkildə istifadə edilə bilər

$stmt = $conn->prepare("SELECT * FROM users WHERE username = ? AND password = ?");
$stmt->bind_param("ss", $username, $password);
$stmt->execute();
  1. Stored Procedures (Saxlanılan prosedurlar): Verilənlər bazasında əvvəlcədən müəyyən edilmiş prosedurlardan istifadə edərək təhlükəsizlik təmin edilir.
  2. Input Validation (Giriş doğrulama): İstifadəçi daxil etdiyi məlumatların doğruluğunu yoxlamaq. Məsələn, yalnız xüsusi simvolların qəbul edilməsi.
  3. Escaping User Input (İstifadəçi girişi qaçırma): SQL sorğularına daxil edilən xüsusi simvolların (məsələn, ‘;, –) qaçırılması.
  4. Web Application Firewalls (WAF): Veb tətbiqləri üçün firewall-lar, SQL injection hücumlarını tanıyaraq bloklaya bilər.
  5. Least Privilege Principle (Ən aşağı icazə prinsipi): Verilənlər bazasına yalnız lazım olan minimum icazə ilə daxil olmaq.

Nümunə SQL Injection testini etmək üçün aşağıdakı tool-dan sitifadə etməliyik
SQL injection-ın təhlükəsini yoxlamaq üçün bir çox alət və yanaşmalar mövcuddur, məsələn:

sqlmap: Bu alət, veb tətbiqlərini SQL injection zəiflikləri üçün avtomatik olaraq test edir.
Burp Suite: Veb tətbiq təhlükəsizlik testləri üçün geniş istifadə edilən bir alətdir və SQL injection zəifliklərini aşkar etməyə kömək edir.

Related Articles

Bir cavab yazın

Sizin e-poçt ünvanınız dərc edilməyəcəkdir. Gərəkli sahələr * ilə işarələnmişdir

Həmçinin bax
Close
Back to top button