在Go语言中,可以使用参数化查询或预编译语句来防止SQL注入。
示例代码:
stmt, err := db.Prepare("SELECT * FROM users WHERE username = ? AND password = ?")
if err != nil {
log.Fatal(err)
}
defer stmt.Close()
rows, err := stmt.Query(username, password)
if err != nil {
log.Fatal(err)
}
defer rows.Close()
// 处理查询结果
示例代码:
stmt, err := db.Prepare("SELECT * FROM users WHERE username = ? AND password = ?")
if err != nil {
log.Fatal(err)
}
defer stmt.Close()
rows, err := stmt.Query(username, password)
if err != nil {
log.Fatal(err)
}
defer rows.Close()
// 处理查询结果
无论使用参数化查询还是预编译语句,都可以防止SQL注入攻击。但需要注意的是,使用预编译语句可能会带来一些额外的性能开销,因此在性能要求较高的场景下,可以使用参数化查询来获得更好的性能。