SQL Enjeksiyonu: Nasıl ve Neden Çalışır
Klasik, kör ve bant dışı SQLi'yi ve parametreli sorguların bunu neden önlediğini anlayın.
SQL Enjeksiyonu: Nasıl ve Neden Çalışır, CoddyKit'te ücretsiz bir Cyber Security Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Cyber Security Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Cyber Security Academy kursu toplamda 4 dersten oluşur.
SQL Enjeksiyonu Nedir
SQL Enjeksiyonu (SQLi), kullanıcı tarafından sağlanan girdinin uygun şekilde temizlenmeden bir SQL sorgusuna eklenmesiyle oluşur ve saldırganların sorgu mantığını değiştirmesine olanak tanır. En eski ve en yıkıcı web güvenlik açıklarından biridir.
SQL Enjeksiyonu Nasıl Çalışır
Bir oturum açma formu şu sorguyu çalıştırır: SELECT * FROM users WHERE username='INPUT' AND password='INPUT'
Saldırgan kullanıcı adı olarak ' OR 1=1-- girerse sorgu şu hâle gelir: SELECT * FROM users WHERE username='' OR 1=1--' AND password='...' — bu da tüm kullanıcıları döndürür.
SQL Enjeksiyonu Türleri
SQLi türleri:
- Bant içi: sonuçlar doğrudan yanıtta döndürülür (klasik, hata tabanlı)
- Kör Boole: doğrudan çıktı yoktur; veriler doğru/yanlış yanıtlarından çıkarılır
- Zamana Dayalı Kör: veriler yanıt gecikmelerinden çıkarılır (
SLEEP(5)) - Bant dışı: veriler DNS/HTTP istekleri aracılığıyla dışarı aktarılır
UNION Tabanlı Enjeksiyon
UNION saldırıları, saldırganın denetimindeki sorguların sonuçlarını ekler:
-- Discover number of columns:
id=1 ORDER BY 3--
-- Extract data:
id=1 UNION SELECT username,password,NULL FROM users--Hata Tabanlı Enjeksiyon
Hata iletileri veritabanı yapısını açığa çıkarır. Saldırgan, söz dizimi hatasına neden olan veriler girer ve ortaya çıkan hata iletisi tablo adlarını, sütun adlarını veya veritabanı sürümünü sızdırır. Üretim ortamında ayrıntılı hata iletilerini devre dışı bırakın.
Kör SQL Enjeksiyonu
Görünür bir çıktı olmadığında saldırganlar Boole koşullarını kullanır:
-- If admin exists, page loads normally:
id=1 AND (SELECT COUNT(*) FROM users WHERE username='admin')=1--
-- Time-based:
id=1; IF(1=1) WAITFOR DELAY '0:0:5'--sqlmap: Otomatik SQL Enjeksiyonu
sqlmap, SQL enjeksiyonunu otomatik olarak algılar ve istismar eder. Veritabanlarını dökebilir, dosyaları okuyabilir ve veritabanı kullanıcısının yeterli ayrıcalıkları varsa işletim sistemi komutlarını bile yürütebilir.
sqlmap -u "http://target.com/page?id=1" --dbs
sqlmap -u "http://target.com/page?id=1" -D webapp -T users --dumpSQL Enjeksiyonunu Önleme: Parametreli Sorgular
Birincil savunma, parametreli sorgulardır (hazırlanmış ifadeler). Kullanıcı girdisi bir parametre olarak aktarılır ve hiçbir zaman sorgu dizesine birleştirilmez:
# Python (safe):
cursor.execute("SELECT * FROM users WHERE username = %s", (username,))
# Node.js (safe):
pool.query("SELECT * FROM users WHERE id = $1", [userId])ORM Koruması
Bir ORM (SQLAlchemy, Hibernate, Sequelize) kullanmak, sorgular güvenli soyutlamalar kullanılarak oluşturulduğu için genellikle SQL enjeksiyonunu önler. Ancak dize enterpolasyonu kullanan ham sorgu yöntemleri (execute(), query()), ORM korumalarını aşar.
Girdi Doğrulama ve WAF
Ek savunmalar:
- Girdi türlerini (tamsayılar, e-posta adresleri) doğrulayın ve izin verilenlerle sınırlayın
- Enjeksiyon kalıplarını algılamak için Web Uygulaması Güvenlik Duvarı (WAF) kullanın
- En az ayrıcalıklı veritabanı hesapları kullanın (salt okunur sorgularda DROP ve UNION bulunmamalı)
- Saklı yordamlar kullanın (maruz kalmayı azaltır, ancak tek başına eksiksiz bir çözüm değildir)
SQL Enjeksiyonunun Etkileri
Başarılı bir SQL enjeksiyonu şu sonuçlara yol açabilir: veritabanının tamamen dökülmesi, kimlik doğrulamanın aşılması, verilerin değiştirilmesi veya silinmesi, sunucu dosyalarının okunması (LOAD_FILE), web kabuklarının yazılması ve xp_cmdshell (MSSQL) aracılığıyla işletim sistemi komutlarının yürütülmesi.
Hızlı Kontrol: SQL Enjeksiyonu
SQL enjeksiyonuna karşı birincil savunma nedir?
Ders Özeti
SQL enjeksiyonu, temizlenmemiş kullanıcı girdisi aracılığıyla veritabanı sorgularını değiştirir. Saldırı türleri klasik, kör mantıksal, zaman tabanlı ve UNION tabanlıdır. Birincil savunma parametreli sorgulardır — kullanıcı girdisini SQL ile asla birleştirmeyin. Nesne-ilişkisel eşleyicileri dikkatle kullanın, en az ayrıcalıklı veritabanı hesaplarını uygulayın ve ayrıntılı hata mesajlarını devre dışı bırakın.
Sıkça Sorulan Sorular
“SQL Enjeksiyonu: Nasıl ve Neden Çalışır” dersi ücretsiz mi?
Evet — “SQL Enjeksiyonu: Nasıl ve Neden Çalışır” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Cyber Security Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Cyber Security Academy kursu toplamda 4 dersten oluşur.
“SQL Enjeksiyonu: Nasıl ve Neden Çalışır” dersinde ne öğreneceğim?
Klasik, kör ve bant dışı SQLi'yi ve parametreli sorguların bunu neden önlediğini anlayın. Cyber Security Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Cyber Security Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Cyber Security Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“SQL Enjeksiyonu: Nasıl ve Neden Çalışır” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Cyber Security Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Cyber Security Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- SQL Enjeksiyonu: Nasıl ve Neden Çalışır
- Siteler Arası Betik Çalıştırma (XSS)
- Siteler Arası İstek Sahteciliği (CSRF)
- Güvenlik Yanlış Yapılandırmaları ve Açık Hizmetler