SQL enjeksiyonu (ARCH3100)
Anahtar typescript.security.sql-injection · Önem error · Kategori security · CWE CWE-89
SQL sorgusunu kullanıcı girdisiyle birleştirerek veya interpolasyonla oluşturmak, saldırganların sorgu yapısını değiştirip veri okumasına veya değiştirmesine olanak tanır.
Hatalı
Bölüm başlığı “Hatalı”app.get("/users", async (req, res) => { // email="' OR '1'='1" const rows = await db.query( `SELECT * FROM users WHERE email = '${req.query.email}'` ); res.json(rows);});app.get("/users", async (req, res) => { const rows = await db.query( "SELECT * FROM users WHERE email = $1", [req.query.email] ); res.json(rows);});Düzeltme
Bölüm başlığı “Düzeltme”Her zaman parametreli sorgular veya hazırlanmış ifadeler kullanın; girdiyi asla sorgu dizesine birleştirmeyin.