SQL enjeksiyonu nedir?

İngilizce: SQL injection

Uygulamanın kullanıcı girdisini doğrudan veritabanı sorgusuna eklemesi sonucu, saldırganın sorgunun mantığını değiştirerek yetkisiz veri okuma, değiştirme veya silme imkânı elde ettiği zafiyet.

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.

Onaylıyor musunuz?