SQL Enjeksiyonu (ARCH5100)
Anahtar go.security.sql-injection · Önem error · Kategori security · CWE CWE-89
Kullanıcı girdisini string birleştirme veya fmt.Sprintf ile SQL sorgusuna gömmek, saldırganların sorgu yapısını değiştirip veri okumasına veya silmesine olanak tanır.
Hatalı
Bölüm başlığı “Hatalı”func getUser(db *sql.DB, name string) (*sql.Row, error) { q := fmt.Sprintf("SELECT id, email FROM users WHERE name = '%s'", name) return db.QueryRow(q), nil}func getUser(db *sql.DB, name string) (*sql.Row, error) { return db.QueryRow("SELECT id, email FROM users WHERE name = ?", name), nil}Düzeltme
Bölüm başlığı “Düzeltme”Sorguyu asla string ile birleştirmeyin; tüm kullanıcı girdileri için parametreli sorgular (placeholder) kullanın.