Uygulama Katmanı Saldırıları: SQL Injection, XSS ve CSRF Tehditleri
Siber saldırıların büyük bölümü artık ağ veya işletim sistemlerinden ziyade uygulama katmanında gerçekleşiyor. Çünkü burada hem kullanıcı verileri hem de iş mantığı bulunuyor.
Web uygulamaları, API’ler ve mobil servisler üzerinden yapılan her istek, potansiyel bir saldırı yüzeyi.
Bu makalede, modern web dünyasında en sık görülen üç uygulama katmanı saldırısını ele alıyoruz:
SQL Injection, Cross-Site Scripting (XSS) ve Cross-Site Request Forgery (CSRF).
SQL Injection (SQL Enjeksiyonu)
Tanım
SQL Injection, uygulamanın kullanıcıdan aldığı veriyi doğrudan SQL sorgusuna yerleştirmesi sonucu, saldırganın sorguyu manipüle ederek veritabanına izinsiz erişim sağlaması anlamına gelir.
Örnek;
SELECT * FROM users WHERE username = '$user' AND password = '$pass';Saldırgan şu girdiyi gönderirse:
' OR '1'='1Sorgu şu hale gelir;
SELECT * FROM users WHERE username='' OR '1'='1' AND password='';Sonuç olarak tüm kullanıcılar listelenir veya oturum açılacaktır.
Etkileri Neler?
- Kullanıcı bilgileri, kart verileri, kişisel kayıtlar sızabilir.
- Veritabanı tamamen kontrol altına alınabilir.
- Bazı durumlarda sistem komutları bile çalıştırılabilir (ör. xp_cmdshell).
Gerçek Vakalar
- TalkTalk (2015): SQL Injection yoluyla 150.000 müşterinin verisi çalındı.
- Yahoo (2014): SQL Injection zafiyeti zincirinde kimlik bilgileri sızdı.
Korunma Yöntemleri
- Parametrik sorgular (Prepared Statements) kullan.
- Kullanıcı girdilerini sanitize et, string birleştirmeden kaçın.
- ORM’lerin güvenli API’lerini tercih et.
WAF / input validation ile ek koruma sağla.
Cross-Site Scripting (XSS)
Tanım
XSS saldırıları, saldırganın zararlı JavaScript kodlarını başka kullanıcıların tarayıcısında çalıştırmasına dayanır. Genellikle bir form, yorum alanı veya arama kutusu gibi kullanıcı girdileri üzerinden gerçekleşir.
Türleri
- Stored XSS: Zararlı kod veritabanına kaydedilir, sayfa yüklendikçe herkeste çalışır.
- Reflected XSS: Kod doğrudan link veya parametre aracılığıyla yansıtılır.
- DOM-based XSS: Manipülasyon doğrudan tarayıcı tarafında yapılır.
Örnek:
<input type="text" name="q" value="<script>alert('XSS')</script>">
Kullanıcının tarayıcısında alert çalışır, ama gerçek saldırıda bu script çerez, token veya oturum bilgisi çalar.
Gerçek Vakalar
- British Airways (2018): Ödeme sayfasındaki XSS açığı üzerinden kart verileri çalındı.
- eBay (2017): Ürün sayfalarındaki dinamik içerik XSS’e izin veriyordu.
Korunma Yöntemleri
- Kullanıcı girdilerini escape et (<, >, ‘, “).
- HTTP header’larında Content-Security-Policy (CSP) kullan.
- Giriş doğrulamasında HTML encode / output encode uygula.
- HttpOnly ve Secure flag’leri olan cookie kullan.
Cross-Site Request Forgery (CSRF)
- Kullanıcı girdilerini escape et (<, >, ‘, “).
- HTTP header’larında Content-Security-Policy (CSP) kullan.
- Giriş doğrulamasında HTML encode / output encode uygula.
- HttpOnly ve Secure flag’leri olan cookie kullan.
Tanım
CSRF, oturum açmış bir kullanıcının bilgisi dışında, onun yetkileriyle istemediği bir işlem yapılmasına neden olur.
Örneğin:
Bir kullanıcı bankasına giriş yapmıştır. Saldırgan şu URL’yi gizlice açtırır:
https://banka.com/transfer?to=attacker&amount=5000Kullanıcının tarayıcısı oturum çerezini gönderir, sistem isteği gerçek sanır.
Etkileri
- Parasal işlemler, parola değişiklikleri, veri silme işlemleri gizlice yapılabilir.
Gerçek Vakalar
- MySpace (2006): CSRF açığıyla toplu spam mesajlar gönderildi.
- Netflix (2018): Kullanıcı hesap ayarları CSRF ile manipüle edilebiliyordu.
Korunma Yöntemleri
- CSRF token ekle (her form için benzersiz).
- SameSite cookie flag’ini aktif et.
- Kritik işlemler için re-authentication veya MFA onay iste.
- Yalnızca POST isteklerine izin ver, GET ile işlem yaptırma.
Ortak Nokta: Girdi Doğrulama (Input Validation)
- Bu üç saldırının da ortak kökü: kullanıcı girdisine güvenmek.
- Hiçbir kullanıcı girdisi, hiçbir koşulda “temiz” kabul edilmemelidir.
- Girdi doğrulama; filtreleme, kısıtlama ve bağlama uygun kodlama (encoding) ile yapılmalıdır.
|
Saldırı Türü |
Amaç |
Etki |
Önleme Yöntemleri |
|---|---|---|---|
|
SQL Injection |
Veritabanına sızma |
Veri hırsızlığı, sistem kontrolü |
Parametrik sorgular, input validation |
|
XSS |
Kullanıcı oturumlarını çalmak, kod çalıştırmak |
Kimlik bilgisi çalma, yönlendirme |
CSP, output encoding, input filtering |
|
CSRF |
Kullanıcı adına işlem yaptırmak |
Yetkisiz işlem, para transferi |
CSRF token, SameSite cookie, MFA |
Teknik olarak, modern web uygulamaları güvenli kodlama standartları ve doğru yapılandırmalar ile geliştirildiğinde, SQL Injection, XSS ve CSRF gibi saldırıların engellenmesi mümkündür. Ancak uygulamada:
- Kullanıcı girdilerinin yeterince filtrelenmemesi.
- Parametrik sorgular yerine dinamik SQL kullanılması;
- Output encoding ve Content Security Policy (CSP) eksiklikleri;
- CSRF token ve oturum güvenliği mekanizmalarının uygulanmaması;
- Geliştirici farkındalığının yetersiz olması
gibi zaafiyetler olduğu sürece uygulama katmanı saldırıları hâlâ ciddi bir tehdit olmaya devam etmektedir.
Ayrıca modern saldırganlar artık yalnızca manuel yöntemler değil; otomatik exploit araçları, hazır payload kütüphaneleri ve tarama botları kullanarak bu açıkları çok daha hızlı tespit edip istismar edebilmektedir.
Sonuç olarak, uygulama katmanı saldırıları teknik olarak önlenebilir olsa da — hatalı kodlama, eksik güvenlik kontrolleri ve insan faktörü bir araya geldiğinde en kritik veri ihlallerine yol açmaya devam edecektir.
Serimizin bir sonraki bölümünde, artık bilinen açıkları değil, henüz keşfedilmemiş veya yamalanmamış zafiyetleri hedef alan Zero-Day Exploit saldırılarını inceleyeceğiz.
