Bloglara Dön
EXPLOIT 1 Mayıs 2026 19 Okunma

SQL Injection (SQLi) Nedir? Nasıl Çalışır ve Nasıl Önlenir?

A
Yazar
ahmet
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?

https://images.openai.com/static-rsc-4/nso6ZnW9BmwmwJX-wGIlEHBzBMjpTBtta33AL-wf87S3uQaqtGaDMryR_laAtN6lJ5QNrp4VQBx6Rlg1b8qgHfoojrGSuuNBlDAvEgBidRh_tnvTQpVHQlMnw-t0IL5pxKV871Xc-LvW_80KrEA_KuHOPnuictDxDbMez1kasLjYBt9SqFL5lWWC1XATglcO?purpose=fullsize

https://images.openai.com/static-rsc-4/sncm7272yNqtAGYD_1PiscZyy9L_H83ooQo1Qdsf6AeIJ9h8Ffhc7o3CoG3DFChjDb3Hms5lOrUoFSENiUVcT7yIjNw_M-spU85qvFXvvHA-VCi0t_WIKXuqIoffNIP1l5y8O-Titn44FB81dYQ5VQUYPLFKyKICIaGCjqil2SWVGzLAdzjJ8kz4Tlwnp5ty?purpose=fullsize

https://images.openai.com/static-rsc-4/z1GWsN3de2CUAPxYIN2OP8rhQyDFwpiAGVJ3AkpSeP0TaZeJ4S_-gJ3F3GUGSaLQAhDboobb5zDu38NT1DBiBZ9cqbGd8i1TdzkfLJzpVTgoei1pRvntekTTDpWL-2oHJrnHN8odWIOA0up0KVU1WnhHhgM8oXdsG12FYclLeaPh4d1GNIMHIu4VWp8Oq82V?purpose=fullsize

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ş!