SQL Injection (SQLi) Nedir?

Uncategorized

1. Giriş

Web uygulamalarının veri tabanı yönetim sistemleri ile kurduğu iletişim, modern dijital dünyanın temel işleyiş mekanizmasını oluşturur. Ancak bu iletişim köprüsü, doğru inşa edilmediği takdirde siber saldırganlar için en büyük giriş kapısına dönüşebilmektedir. SQL Injection (SQLi), web uygulamalarında on yıllardır varlığını sürdüren, etkisi en yıkıcı ve tespiti en kritik olan “Enjeksiyon” tabanlı güvenlik zafiyetidir.

Temelinde, kullanıcıdan alınan verilerin yeterince doğrulanmadan doğrudan SQL sorgularına dahil edilmesi yatar. 2026 yılı itibarıyla, gelişmiş yazılım çatılarının sunduğu hazır korumalara rağmen, hatalı kodlama pratikleri nedeniyle SQLi, veri ihlallerinin birincil sebebi olmaya devam etmektedir.

2. Konunun Temel Açıklaması

SQL Injection, bir saldırganın web uygulaması tarafından veri tabanına gönderilen sorguları manipüle etmesi sürecidir. Uygulama, kullanıcıdan gelen girdiyi (input) “sorgunun bir parçası” olarak algılayıp işlediğinde zafiyet tetiklenir.

Kurumsal perspektifte SQLi; müşteri listelerinin çalınması, finansal kayıtların değiştirilmesi ve KVKK kapsamında telafisi güç ihlallerin yaşanması anlamına gelir. Zafiyetin ciddiyeti, saldırganın veri tabanı seviyesinden işletim sistemi seviyesine kadar sızabilme potansiyelinden kaynaklanmaktadır.

3. Çalışma Mantığı ve Teknik Arka Plan

SQL Injection zafiyetinin temelinde, “veri” (data) ile “komut” (code) arasındaki sınırın belirsizleşmesi yatar. Yazılımcı, kullanıcıdan gelen girdinin sadece bir değer olduğunu varsayarken, saldırgan bu girdiye SQL sözdizimine (syntax) ait özel karakterler ekleyerek sorgunun mantığını değiştirir.

Örnek Senaryo: SELECT * FROM kullanicilar WHERE user = '$kullanici' AND pass = '$sifre'

Saldırgan kullanıcı adı alanına ' OR 1=1 -- ifadesini enjekte ederse sorgu şu hale gelir: SELECT * FROM kullanicilar WHERE user = '' OR 1=1 --' AND pass = '...'

Buradaki -- karakteri sorgunun geri kalanını yorum satırı yapar. 1=1 her zaman doğru olduğu için, saldırgan parola bilmeksizin sisteme giriş yapar.

4. SQL Injection Türleri ve Saldırı Vektörleri

SQLi saldırıları üç ana kategoride incelenir:

  • In-band (Classic) SQLi: Saldırgan sonucu aynı kanal üzerinden alır.

    • Error-based: Hata mesajları üzerinden tablo yapıları öğrenilir.

    • Union-based: UNION operatörü ile farklı tablolardan veri çekilir.

  • Inferential (Blind) SQLi: Veri doğrudan görünmez, çıkarım yapılır.

    • Boolean-based: Sisteme “doğru/yanlış” soruları sorularak sayfa çıktısı izlenir.

    • Time-based: SLEEP() komutları ile sunucu yanıt süreleri analiz edilir.

  • Out-of-band SQLi: Veri tabanı sunucusunun harici bir sunucuya (DNS/HTTP) istek göndermeye zorlandığı yöntemdir.

5. Tespit ve Doğrulama Yöntemleri

  • Hata Analizi: Giriş alanlarına ', ", ; gibi karakterler girilerek sistemin hata verip vermediği kontrol edilir.

  • Mantıksal Sınama: URL parametrelerine AND 1=1 ve AND 1=2 eklenerek çıktı farklılıkları gözlemlenir.

  • Gecikme Testleri: Zaman tabanlı saldırılar için milisaniyelik yanıt süreleri ölçülür.

  • Otomatik Tarayıcılar: Burp Suite, SQLmap ve Acunetix gibi profesyonel araçlar ile açıklar dökümante edilir.

6. Riskler ve Kurumsal Etkileri

  • Hassas Veri Sızıntısı: Müşteri verilerinin ve ticari sırların çalınması.

  • Veri Bütünlüğünün Bozulması: Kayıtların silinmesi veya sahte yetkili kullanıcı eklenmesi.

  • Hukuki Yaptırımlar: KVKK uyarınca “yeterli teknik tedbirlerin alınmaması” nedeniyle kesilen ağır para cezaları.

  • Sistem Ele Geçirme: Veri tabanı üzerinden işletim sistemi komutları çalıştırılması.

7. Önleme ve Güvenlik Önlemleri

SQL Injection’ı önlemek için uygulanması gereken temel prensip “girdiye asla güvenme” ilkesidir.

  • Parametreli Sorgular (Prepared Statements): Veriyi sorgu şablonundan ayırır. En kesin savunmadır.

  • En Az Yetki İlkesi (Least Privilege): Veri tabanı kullanıcısı sadece gerekli yetkilere (SELECT, INSERT vb.) sahip olmalıdır.

  • WAF ve Girdi Doğrulama: Web Uygulama Güvenlik Duvarları ile paternler engellenmeli, girdi tipleri doğrulanmalıdır.

Tags :
sql,sqlinjection,WebSecurity
Share This :

Diğer Yazılar

Bize Soru Sorun

Soru ve görüşleriniz için bizimle iletişime geçebilirsiniz.