HTTP Request Data in SQL String Concatenation
HTTP request data from forms, query parameters, or JSON payloads is directly concatenated into SQL strings without parameterization.
Preview example – GO
// VULNERABLE: HTTP request data in SQL concatenation
package main
import (
"database/sql"
"fmt"
"net/http"
_ "github.com/go-sql-driver/mysql"
)
func searchUsers(w http.ResponseWriter, r *http.Request) {
name := r.URL.Query().Get("name")
department := r.URL.Query().Get("department")
role := r.URL.Query().Get("role")
// Direct request data concatenation vulnerability
query := fmt.Sprintf("SELECT * FROM users WHERE name LIKE '%%%s%%' AND department = '%s' AND role = '%s'",
name, department, role)
db, _ := sql.Open("mysql", dsn)
defer db.Close()
rows, err := db.Query(query)
if err != nil {
http.Error(w, err.Error(), 500)
return
}
defer rows.Close()
}