Aller au contenu

SQL Injection (ARCH5100)

Ce contenu n’est pas encore disponible dans votre langue.

Key go.security.sql-injection · Severity error · Category security · CWE CWE-89

Embedding user input into a SQL query via concatenation or fmt.Sprintf lets attackers alter the query structure to read or destroy data.

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
}

Never concatenate input into queries; use parameterized queries (placeholders) for all user input.