Konuyu Açan
#1
İnternetten gelen AJAX istekleriyle çalışan uygulamalarda sorgu güvenliği çoğu zaman göz ardı ediliyor. Hem istemci tarafı hem de sunucu tarafı katmanlarında alınacak önlemler, veri bütünlüğünü ve API güvenliğini doğrudan etkiliyor. Aşağıda tecrübeyimle derlediğim noktalar üzerinden bir tartışma başlatmak istiyorum.
1) Gelen veriyi güvenli biçimde işlemek nedir?
- AJAX ile gelen verinin nereden geldiğini ve hangi alanların zorunlu/opsiyonel olduğunu netleştirmek gerekli. Örneğin kullanıcı girdisi olarak kabul edilen alanlar için tip kontrollü doğrulama ve boyut sınırlaması (string uzunluğu, numeric aralıkları) uygulanmalı.
- Veriyi doğrudan SQL sorgusuna eklemekten kaçınıp, her zaman prepare/execute benzeri parametrik sorgu mekanizmalarını kullanmak gerekir. Bu, enjeksiyon riskini en aza indirir ve hatalı string birleştirmelerini ortadan kaldırır.
2) Sunucu tarafı güvenlik pratikleri
- AJAX çağrılarında CSRF korumasını mevcut oturumla ilişkilendirmek için token kullanımı; özellikle POST isteklerinde bu tokenın doğrulanması kritik.
- Yetkilendirme kontrollerini sadece istemci tarafına bırakmamak; hangi uç noktaya hangi kullanıcı rolünün erişebileceğini sunucu tarafında sıkı denetlemek.
- Hız sınırlaması ve yeniden deneme koruması eklemek, brute-force veya DDoS etkilerini azaltır.
- Dosya yüklemeleri veya JSON gövdesi gibi farklı içerik tiplerinde XSS ve dosya güvenliği açısından uygun temizlik ve doğrulamaları uygulamak.
3) Kodlama pratiği ve örnek senaryolar
- PHP tarafında PDO ile bağlanıp tüm kullanıcı girdilerini bind Parametrelerle kullanmak; örneğin SELECT/UPDATE/INSERT sorgularında ? placeholders ile çalışmak.
- JSON ile iletişimde hata yönetimini açık ve güvenli tutmak: hata mesajlarını ayrıntılı hataya düşmeden kullanıcıya iletmek, sunucuda loglamak.
- İstemci tarafında da veriyi asla tamamen güvenli saymamak: client-side doğrulama kullanıcı deneyimini iyileştirir ama güvenlik tek başına sunucu tarafında sağlanır.
4) İzlenmesi gereken testler
- Enjeksiyon testi için beklenmeyen karakterler, uzun stringler ve sınır değerlerle sorguların çalıştırılması.
- Yetkisiz erişim senaryoları: oturum yok, süresi dolmuş token, farklı rolle istekler.
- JSON hataları ve bozuk payload’larda güvenli hata yanıtları.
Siz hangi güvenlik önlemlerini AJAX bazlı API tasarımlarında öncelikli görüyorsunuz? Gerçek hayat projelerinizde karşılaştığınız sıkı güvenlik durumları veya çözdüğünüz özel sorunlar var mı? Deneyimlerinizi ve hangi kılavuzları (standartlar/özellikler) takip ettiğinizi paylaşır mısınız?
