wmdestek
Moderatör
-
Vitrin konusu
- #1
CSRF – XSS – SQL Injection Engelleme
Web güvenliği denildiğinde en sık karşılaşılan üç saldırı türü CSRF, XSS ve SQL Injection’dır. Bu açıklar küçük gibi görünse de, ihmal edildiğinde ciddi veri kaybına, kullanıcı hesaplarının ele geçirilmesine ve hatta sistemin tamamen kontrol dışı kalmasına yol açabilir. Bu yüzden konuya “teknik detay” gözüyle değil, temel bir güvenlik refleksi olarak bakmak gerekir.CSRF (Cross-Site Request Forgery) Nasıl Engellenir?
CSRF saldırısında amaç, kullanıcının oturumu açıkken onun adına istek göndermektir. Örneğin kullanıcı panelde giriş yapmışken, arka planda şifre değiştirme isteği tetiklenebilir. Bunu önlemenin en temel yolu CSRF token kullanmaktır. Formlara ve kritik isteklere benzersiz, oturuma özel bir token eklenir ve sunucu bu token’ı doğrular. Ayrıca SameSite cookie ayarını aktif etmek ve kritik işlemleri sadece POST metoduyla yapmak da önemlidir. Sadece “gizli input koymak” yeterli değildir; sunucu tarafı doğrulama şarttır.XSS (Cross-Site Scripting) Nasıl Engellenir?
XSS, saldırganın siteye zararlı JavaScript kodu enjekte etmesiyle gerçekleşir. Bu açık genellikle yorum alanları, profil bölümleri veya arama kutuları üzerinden ortaya çıkar. En etkili önlem çıktı filtreleme (output escaping) yöntemidir. Yani kullanıcıdan gelen veri doğrudan ekrana basılmaz, HTML karakterleri encode edilir. Ayrıca Content Security Policy (CSP) başlığı kullanmak da zararlı scriptlerin çalışmasını zorlaştırır. Burada önemli bir tartışma noktası şudur: Sadece input filtrelemek yeterli mi? Hayır. Asıl kritik olan, çıktıyı güvenli şekilde üretmektir.SQL Injection Nasıl Engellenir?
SQL Injection, veritabanına zararlı sorgular enjekte edilmesiyle oluşur. En klasik örnek: ' OR 1=1 -- gibi ifadelerle login sistemini atlatmaktır. Bunun temel çözümü hazır ifadeler (prepared statements) kullanmaktır. PDO veya parameterized query kullanıldığında kullanıcı girdisi sorgunun parçası değil, parametresi olur. Ayrıca veritabanı kullanıcısına gereksiz yetkiler vermemek de önemlidir. Bir web uygulamasının veritabanı kullanıcısı genellikle sadece SELECT, INSERT, UPDATE yetkisine sahip olmalıdır; DROP veya ALTER gibi yetkiler çoğu senaryoda gereksizdir.Güvenlik Bir “Tek Seferlik” İşlem Değildir
Burada asıl tartışılması gereken konu şudur: Güvenlik sadece kod yazarken mi sağlanır, yoksa sürekli test edilmesi gereken bir süreç midir? Çoğu geliştirici temel önlemleri aldıktan sonra sistemi güvenli kabul eder. Oysa düzenli güvenlik testleri, log analizi ve güncel yazılım kullanımı da en az kod seviyesindeki önlemler kadar önemlidir.Sonuç olarak CSRF, XSS ve SQL Injection açıklarını engellemek mümkündür; ancak bunun için hem geliştiricinin bilinçli olması hem de sistemin düzenli olarak denetlenmesi gerekir. Güvenlik, bir özellik değil; devam eden bir sorumluluktur.
daha farklı bilgi ve önerisi olan varsa konu altınada bilgilendirebilir.