sql enjeksiyonu ne demek?
SQL Enjeksiyonu (SQL Injection), bir web uygulamasının güvenlik açığıdır. Saldırganların, kötü niyetli SQL kodlarını giriş alanlarına (örneğin, formlar, arama kutuları vb.) enjekte ederek veritabanına erişmelerini, verileri değiştirmelerini veya silmelerini sağlayan bir tekniktir.
Nasıl Çalışır?
Web uygulamaları genellikle kullanıcı girdilerini doğrudan SQL sorgularına dahil eder. Eğer bu girdiler uygun şekilde temizlenmez veya doğrulanmazsa, saldırgan SQL komutlarını manipüle edebilir. Örneğin, bir giriş alanına ' OR '1'='1
gibi bir ifade girerek, sorgunun her zaman doğru olarak değerlendirilmesini sağlayabilir ve böylece yetkisiz erişim elde edebilir.
Temel Amaçlar:
- Veri İhlali: Hassas verilerin çalınması (https://www.nedemek.page/kavramlar/veri%20ihlali).
- Kimlik Doğrulama Atlatma: Kullanıcı kimlik bilgilerini atlayarak yetkisiz erişim.
- Veri Değişikliği veya Silinmesi: Veritabanı kayıtlarının değiştirilmesi veya silinmesi.
- Sistem Komutları Çalıştırma: Veritabanı sunucusunda işletim sistemi komutları çalıştırma (daha nadir ama ciddi bir durum).
Korunma Yöntemleri:
- Giriş Doğrulama (Input Validation): Kullanıcıdan alınan tüm girdilerin türünü, uzunluğunu ve içeriğini doğrulamak.
- Parametreli Sorgular (Prepared Statements) veya Saklı Yordamlar (Stored Procedures): SQL sorgularını önceden tanımlamak ve kullanıcı girdilerini parametre olarak geçirmek. Bu, girdilerin SQL kodu olarak yorumlanmasını engeller.
- En Düşük Ayrıcalık İlkesi (Least Privilege Principle): Veritabanı kullanıcılarına yalnızca ihtiyaç duydukları erişim haklarını vermek.
- Hata Mesajlarını Gizleme: Detaylı hata mesajlarının saldırganlara bilgi sızdırmasını önlemek.
- Web Uygulama Güvenlik Duvarı (WAF): SQL enjeksiyonu gibi saldırıları tespit edip engelleyebilen bir güvenlik katmanı kullanmak. (https://www.nedemek.page/kavramlar/web%20uygulama%20güvenlik%20duvarı)
- Düzenli Güvenlik Testleri: Uygulamanın güvenlik açıklarını tespit etmek için periyodik olarak güvenlik testleri yapmak (örneğin, penetrasyon testi). (https://www.nedemek.page/kavramlar/penetrasyon%20testi)