İçeriğe geç

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.

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
}

Sorguyu asla string ile birleştirmeyin; tüm kullanıcı girdileri için parametreli sorgular (placeholder) kullanın.