SQL Injection (SQLi) Nedir? Nasıl Çalışır ve Nasıl Önlenir?
Giriş
Web uygulamaları kullanıcıdan veri alır ve bu verileri çoğu zaman veritabanı sorgularında kullanır. Girdi doğrulaması zayıfsa, saldırganlar bu girdileri manipüle ederek veritabanı üzerinde yetkisiz işlemler gerçekleştirebilir. Bu zafiyet SQL Injection (SQLi) olarak adlandırılır ve en kritik web güvenliği açıkları arasında yer alır.
SQL Injection Nedir?
SQL Injection, kullanıcı girdisinin uygun şekilde filtrelenmeden SQL sorgularına dahil edilmesi sonucu, sorgu mantığının saldırgan tarafından değiştirilmesidir.
Basit mantık:
- Kullanıcı girdisi → doğrudan sorguya eklenir
- Saldırgan özel ifadeler ekler
- Veritabanı beklenmeyen komutları çalıştırır
SQL Injection Nasıl Çalışır?
Örnek bir giriş senaryosu:
SELECT * FROM users WHERE username = 'admin' AND password = '1234';
Eğer uygulama girdiyi filtrelemezse, saldırgan şu şekilde bir giriş deneyebilir:
' OR '1'='1
Bu durumda sorgu mantığı değişir ve kimlik doğrulama atlatılabilir.
SQL Injection Türleri
1. Authentication Bypass
Giriş sistemlerini atlatmak için kullanılır.
2. Union-Based SQLi
Farklı sorguları birleştirerek veri çekmeyi sağlar.
3. Error-Based SQLi
Hata mesajları üzerinden veri sızdırılır.
4. Blind SQL Injection
Doğrudan çıktı yoktur, dolaylı yollarla veri çıkarılır.
SQL Injection Etkileri
- Kullanıcı verilerinin çalınması
- Admin yetkisi elde edilmesi
- Veritabanının silinmesi veya değiştirilmesi
- Sistem bütünlüğünün bozulması
SQL Injection Nasıl Önlenir?
1. Parametreli Sorgular (Prepared Statements)
En etkili yöntemdir. Kullanıcı girdisi sorgudan ayrılır.
2. Input Validation
Beklenmeyen karakterler filtrelenir.
3. ORM Kullanımı
Framework’ler SQLi riskini azaltır.
4. Hata Mesajlarını Gizleme
Veritabanı hataları dışarı verilmez.
5. WAF (Web Application Firewall)
Zararlı istekleri filtreler.
Mini Lab (Güvenli Ortamda)
SQLi’yi öğrenmek için kontrollü ortamlar kullan:
- DVWA (Damn Vulnerable Web App)
- WebGoat
Bu platformlarda farklı SQLi türlerini güvenli şekilde test edebilirsin.
Sonuç
SQL Injection, basit bir girdi hatasından doğmasına rağmen çok ciddi sonuçlar doğurabilir. Güvenli kodlama teknikleri ve doğru yapılandırma ile bu risk büyük ölçüde ortadan kaldırılabilir.
Etik Kullanım ve Yasal Sorumluluk
Bu makalede anlatılan teknikler yalnızca eğitim ve yetkili güvenlik testleri amacıyla sunulmuştur. İzinsiz sistemlerde uygulanması yasal suç teşkil edebilir. Bu bilgileri yalnızca kendi sistemlerinizde veya izinli ortamlarda kullanın.
Makaleyi beğendin mi? Bağlantıyı kopyalayarak siber dünyada paylaş!