Vulnerabilities

SQL Enjeksiyonu (SQLi) Nedir?

SQL Enjeksiyonu (SQLi), saldırganların veritabanını manipüle etmek için giriş alanına kötü niyetli SQL ifadeleri girdiği bir saldırı türüdür.

SQL Enjeksiyonu (SQLi) Nedir?

SQL Enjeksiyonu (SQLi), saldırganların veritabanını manipüle etmek için giriş alanına kötü niyetli SQL ifadeleri girdiği bir saldırı türüdür.

Bu saldırı, doğrulama ve kullanıcı girişini düzgün bir şekilde ele alamayan ve şifre veya kredi kartı bilgileri gibi hassas verilere yetkisiz erişime izin veren uygulamaları hedef alır.

SQL Enjeksiyonu Nasıl Çalışır

Bir uygulama, kullanıcı girişini uygun doğrulama olmadan doğrudan bir veritabanı sorgusuna dahil ettiğinde, saldırganlar sorgunun davranışını değiştirerek kötü niyetli bir SQL ifadesi girebilir.

Örneğin:

SELECT * FROM users WHERE username = 'admin' AND password = '12345';

Bir saldırgan şunu girebilir:

' OR '1'='1

Sonuç olarak:

SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '';

Bu her zaman doğru döner ve yetkisiz erişim sağlar.

Siber Güvenlikte SQL Enjeksiyonunun Önemi

SQL Enjeksiyonu, siber güvenlikteki en tehlikeli ve en eski tekniktir. Bu tür saldırılar, sürekli olarak OWASP İlk 10 listesinde yer almaktadır.

Küçük güvenlik açıkları bile bir saldırgana şunları yapma imkanı tanır:

  • Verilere erişim, değiştirme veya silme
  • Kimlik doğrulamayı atlatma
  • Veritabanında yönetimsel işlemler yürütme.
  • Tüm sistemi tehlikeye atma.

Yaygın SQL Enjeksiyonu Türleri

  • Klasik SQLi : Web formları veya URL parametreleri aracılığıyla doğrudan enjeksiyon.
  • Kör SQLi : Saldırganlar veritabanı bilgilerini dolaylı olarak çıkarır (örneğin, hata mesajları veya yanıt süresi aracılığıyla).
  • Birleşim Tabanlı SQLi : Birden fazla sorgunun sonuçlarını birleştirmek için UNION operatörünü kullanır.
  • Hata Tabanlı SQLi : Bilgi çıkarmak için veritabanı hata mesajlarına dayanır.
  • Zaman Tabanlı Kör SQLi : Sorgu sonuçlarını tahmin etmek için sunucu yanıt gecikmelerini kullanır.

SQL Enjeksiyonunu Önleme Yöntemleri

1. Parametreli Sorgular (Hazırlanmış İfadeler) Kullanın

SQL komutlarının kullanıcı girdisini veri olarak, yürütülebilir kod olarak değil, ele almasını sağlayın.

cursor.execute("SELECT * FROM users WHERE username = ?", (username,))

2. Girdi Doğrulama ve Temizleme

Kullanıcılardan gelen tüm girdileri doğrulayın, yalnızca beklenen karakterlere izin verin.

3. ORM Çerçeveleri Kullanın

Prisma, Hibernate gibi çerçeveler doğrudan SQL işlemlerini azaltır.

4. En Az Ayrıcalık İlkesi

Kullanıcı izinlerini sınırlayın, yalnızca gerekli izinleri verin.

5. Düzenli Güvenlik Testleri

Uygulama güvenliği test araçları olarak SAST, DAST veya IAST kullanarak enjeksiyon açıklarını erken tespit edin.

Gerçek Dünyada Örnek

Bir çevrimiçi mağaza web sitesi, saldırganların bir giriş formunda SQL enjeksiyonu kullanarak veritabanından kredi kartı bilgilerini çıkardığı bir ihlal yaşadı.

İlgili Terimler

Siz hazır olunca

Güvenlik sizi
yavaşlatmasın.

Yapay zekâ hızı ile güvenlik borcu arasında seçim yapmayı bırakın. Plexicus, Vibe Coding Security ve ASPM'i paralel çalıştıran tek platformdur — tek iş akışı, her kod tabanı.