İçeriğe atla
Noroxi

CWE-89 · 17.923 kayıt

SQL enjeksiyonu

Neden olur?

Sorgu metni, kullanıcı girdisiyle birleştirilerek oluşturuluyor. Veritabanı, verinin nerede bitip komutun nerede başladığını ayırt edemez.

Nasıl önlenir?

  1. 01Her sorguda parametreli sorgu ya da güvenilir bir ORM kullanın.
  2. 02Veritabanı hesabına yalnızca gereken tablolarda yetki verin.
  3. 03Dinamik sütun ya da sıralama adlarını izin listesiyle sınırlayın.

Hatalı ve düzeltilmiş kod

Temsili ders örneği. Vurgulu satırlar hatanın ve düzeltmenin yeridir.

Hatalı

ts
const owner = req.query.owner;const rows = await db.query(  "SELECT * FROM files WHERE owner = '" + owner + "'");

Düzeltilmiş

ts
const owner = req.query.owner;const rows = await db.query(  "SELECT * FROM files WHERE owner = $1",  [owner]);

Kodunuzda bu kalıp var mı?

Web ve API sızma testi kapsamında bu sınıfı özellikle arıyoruz. Bulgular satır numarasıyla teslim edilir.

Bu sınıftaki CVE’ler

10.000 kayıt

Tüm zafiyet sınıfları