SQL enjeksiyonu, girdi ile komutun birbirinden ayrılmamasından kaynaklanan bir enjeksiyon zafiyetidir. Sonuçları ciddi olabilir: tüm veritabanının sızdırılması, kimlik doğrulamanın atlatılması, verilerin değiştirilmesi ve bazı yapılandırmalarda sunucunun ele geçirilmesi.
Korunma:
- Parametreli sorgular (hazır ifadeler) kullanın. Bu, en etkili ve birincil savunmadır; girdi her zaman veri olarak işlenir, komut olarak değil.
- Güvenli kullanılan ORM katmanlarını tercih edin ve ham sorgu birleştirmekten kaçının.
- Tablo veya sütun adı gibi parametrelenemeyen değerler için izin listesi kullanın.
- Veritabanı hesabına en az yetki verin; uygulama hesabı tablo silme gibi yetkilere sahip olmamalıdır.
- Ayrıntılı veritabanı hata mesajlarını kullanıcıya göstermeyin.
WAF ek koruma sağlayabilir, ancak güvenli kodlamanın yerini tutmaz. Enjeksiyon, OWASP Top 10 listesinde uzun süredir yer alan risk kategorilerindendir.