SQL Injection (SQLi) Nedir? Türleri, Gerçek Saldırı Senaryoları ve Korunma Yöntemleri
SQL Injection nedir, hangi türleri vardır ve web uygulamanızı bu kritik güvenlik açığından nasıl korursunuz? SecureSys uzmanlarından kapsamlı rehber.
SQL Injection (SQLi) Nedir?
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 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
UNIONoperatö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 (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 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 sayfamızdan bize ulaşabilirsiniz.
İlgili Makaleler
Web Uygulama Güvenliği
OWASP Top 10 ve Web Uygulamalarında Test Edilen Güvenlik Açıkları
OWASP Top 10 nedir ve web uygulama sızma testinde hangi güvenlik açıkları test edilir? SecureSys kapsamlı rehberi.
Broken Access Control Nedir? IDOR, BOLA ve Yetkilendirme Zafiyetleri
Broken Access Control, IDOR ve BOLA nedir? Yatay/dikey yetki yükseltme senaryoları ve önleme yöntemleri. SecureSys uzman rehberi.
Kimlik Doğrulama ve Oturum Yönetimi Güvenliği: MFA, Brute Force, Session Hijacking
Kimlik doğrulama ve oturum yönetimi güvenliği: MFA, brute force, credential stuffing ve session hijacking riskleri. SecureSys uzman rehberi.
API Güvenliği Nedir? OWASP API Security Top 10 ve BOLA Riskleri
API güvenliği nedir, OWASP API Security Top 10 riskleri ve BOLA açıkları nasıl önlenir? SecureSys uzman rehberi.
İş Mantığı (Business Logic) Güvenlik Açıkları: Fiyat Manipülasyonu ve Kupon İstismarı
İş mantığı (Business Logic) güvenlik açıkları nedir? Fiyat manipülasyonu, kupon istismarı ve race condition riskleri. SecureSys rehberi.
Cross-Site Scripting (XSS) Nedir? Stored, Reflected, DOM-Based XSS ve Önleme Yöntemleri
XSS (Cross-Site Scripting) nedir, türleri nelerdir ve web uygulamanızı nasıl korursunuz? SecureSys uzmanlarından kapsamlı rehber.
Bu konuda profesyonel destek mi arıyorsunuz?
Uzman ekibimiz ücretsiz danışmanlık için sizi en kısa sürede arasın.