# SQL Injection (SQLi) Nedir? Türleri, Gerçek Saldırı Senaryoları ve Korunma Yöntemleri

**URL:** https://securesys.com.tr/tr/bilgi-merkezi/web-uygulama-guvenligi/sql-injection-nedir-turleri-korunma-yontemleri

### SQL Injection (SQLi) Nedir?

![SQL Injection (SQLi) nedir? Union, Error, Boolean ve Time based türleri](/images/bilgi-merkezi/covers/cover-sql-injection.webp)

SQL Injection (SQLi), bir web uygulamasının veritabanına gönderdiği sorguları saldırganın kendi kötü amaçlı SQL komutlarıyla manipüle edebilmesine dayanan bir web uygulaması güvenlik açığıdır. Uygulama, kullanıcıdan gelen veriyi (form alanı, URL parametresi, HTTP başlığı vb.) yeterince doğrulamadan veya parametrik olmayan şekilde doğrudan SQL sorgusuna eklediğinde ortaya çıkar.

SQL Injection, yıllardır [OWASP Top 10](/tr/hizmetler/web-uygulama-guvenlik-test-hizmeti) listesinde yer almasına rağmen hâlâ en sık karşılaşılan ve en yıkıcı sonuçlara yol açabilen açıklardan biridir. Başarılı bir SQL Injection saldırısı; veritabanının tamamını okuma, veri değiştirme veya silme, kimlik doğrulama mekanizmasını atlatma ve bazı durumlarda sunucu üzerinde komut çalıştırmaya kadar uzanan sonuçlar doğurabilir.

### SQL Injection Türleri

SQL Injection tek bir teknik değil, farklı senaryolarda farklı şekillerde ortaya çıkan bir açık ailesidir:

- **Error-Based SQL Injection** — Veritabanı hata mesajlarının doğrudan kullanıcıya döndürülmesi sonucu, saldırganın hata çıktısından veritabanı yapısı hakkında bilgi toplayabildiği yöntem.
- **Union-Based SQL Injection** — SQL'in `UNION` operatörü kullanılarak orijinal sorgunun sonucuna saldırganın istediği ek veri satırlarının eklenmesi.
- **Boolean-Based Blind SQL Injection** — Uygulama hata mesajı döndürmese bile, sayfanın doğru/yanlış (true/false) davranışındaki farklardan veri sızdırılabilmesi.
- **Time-Based Blind SQL Injection** — Uygulamanın yanıt süresindeki gecikmelerden (örn. `SLEEP()` komutları) yararlanarak veri çıkarımı yapılması.
- **Out-of-Band SQL Injection** — Sonucun HTTP veya DNS istekleri gibi alternatif bir kanal üzerinden saldırgana iletilmesi; genellikle diğer yöntemler mümkün olmadığında kullanılır.

### Gerçek Hayattan Bir Senaryo

Bir e-ticaret platformunun ürün filtreleme özelliğinde yapılan sızma testi sırasında, fiyat aralığı parametresinin sunucu tarafında doğrulanmadan doğrudan SQL sorgusuna eklendiği tespit edilmiştir. Test ekibi, bu parametreyi manipüle ederek filtreleme sorgusunun döndürdüğü satır sayısındaki değişimi gözlemlemiş ve boolean-based blind teknikle veritabanı adı, tablo yapısı ve nihayetinde yönetici hesaplarına ait kimlik bilgilerinin özet (hash) değerlerine erişilebildiğini doğrulamıştır.

Bulgu, canlı sistemde herhangi bir veri değişikliği yapılmadan, yalnızca okuma amaçlı ve kontrollü şekilde doğrulanmış; ardından detaylı teknik rapor ve önceliklendirilmiş çözüm önerileriyle kuruma iletilmiştir.

### Önleme Yöntemleri

- **Parametrik sorgular (Prepared Statements)** kullanımı — kullanıcı girdisi asla doğrudan SQL string'ine eklenmemelidir.
- **ORM katmanlarının doğru yapılandırılması** — ORM kullanmak tek başına güvenlik garantisi vermez, raw query kullanımı dikkatle denetlenmelidir.
- **En az yetki prensibi** — uygulamanın veritabanı kullanıcısı yalnızca ihtiyaç duyduğu işlemler için yetkilendirilmelidir.
- **Girdi doğrulama ve whitelist yaklaşımı** — beklenen veri tipi ve formatı sunucu tarafında sıkı şekilde kontrol edilmelidir.
- **Detaylı hata mesajlarının son kullanıcıya gösterilmemesi** — veritabanı hata çıktıları loglanmalı, kullanıcıya jenerik hata dönülmelidir.
- **[Web Application Firewall](/tr/hizmetler/waf-cozumleri-api-guvenligi) (WAF)** — ek bir savunma katmanı olarak bilinen saldırı imzalarını engelleyebilir, ancak tek başına yeterli değildir.

### Olası Sonuç ve Kuruma Etkisi

| Olası Sonuç | Kuruma Etkisi |
| --- | --- |
| Müşteri veritabanının tamamen okunabilmesi | KVKK/GDPR ihlali, toplu veri sızıntısı |
| Kimlik doğrulama mekanizmasının atlatılması | Yetkisiz yönetici erişimi |
| Veritabanı kayıtlarının değiştirilmesi | Finansal ve operasyonel zarar |
| Veritabanı sunucusunda komut çalıştırma (bazı senaryolarda) | Altyapının tamamen ele geçirilmesi |

### SecureSys SQL Injection Test Yaklaşımı

SecureSys uzmanları, otomatik tarama araçlarının kaçırdığı context-özel SQL Injection senaryolarını manuel analizle tespit eder. Testlerimiz; tüm giriş noktalarının (form, URL parametresi, HTTP başlığı, API endpoint'i) sistematik taranmasını, blind/time-based tekniklerin güvenli ve kontrollü şekilde doğrulanmasını, veritabanı erişim yetkilerinin değerlendirilmesini ve bulguların iş etkisine göre önceliklendirilmiş şekilde raporlanmasını kapsar. Detaylı metodolojimiz için [sızma testi metodolojisi](/tr/bilgi-merkezi/web-uygulama-guvenligi/web-uygulama-sizma-testi-metodolojisi) sayfamızı inceleyebilirsiniz.

Web uygulamanızın SQL Injection ve diğer OWASP Top 10 risklerine karşı test edilmesi için [Web Uygulama Sızma Testi Hizmeti](/tr/hizmetler/web-uygulama-guvenlik-test-hizmeti) sayfamızdan bize ulaşabilirsiniz.
