golang中的查询字符串是否安全?

Ade*_*ard 3 go query-string

考虑以下提取URL上传递的URLParam userId:

userId := http.Request.URL.Query().Get("userId")
Run Code Online (Sandbox Code Playgroud)

这是安全的(转义并准备在db调用中使用),或者我是否需要在使用之前将其转义/清理它?

Not*_*fer 6

这不是数据库安全的,您应该在放入任何内容之前使用数据库驱动程序的转义.

你应该使用这样的函数sql.DB.Query()让你传递参数并正确地转义它们.http://golang.org/pkg/database/sql/#DB.Query

例如

userId := http.Request.URL.Query().Get("userId")

rows, err := db.Query("SELECT * FROM users WHERE id=?", userId)
Run Code Online (Sandbox Code Playgroud)