【发布时间】:2021-01-18 01:40:55
【问题描述】:
我在 Go 中的 postgresql 注入论坛上进行了研究,发现了一些关于 SQL 注入的有用信息,如下所示:
How to execute an IN lookup in SQL using Golang?
How can I prevent SQL injection attacks in Go while using "database/sql"?
但我仍然需要一些建议,因为我在 Go 中的代码使用了不同类型的代码和用例。 我需要建议的一些用例/问题是这样的
- 使用查询循环进行多次插入,例如
INSERT INTO a (a1,a2,a3) VALUES (%d,%d,%s)使用 fmt.Sprintf,我知道使用 sprintf 不好。那么对于插入的这个循环查询有什么解决方案吗? 例如:INSERT INTO a (a1,a2,a3) VALUES (%d,%d,%s),(%d,%d,%s),(%d,%d,%s) - 如果参数使用
%d而不是%s,使用 fmt.Sprintf 生成查询是否安全? - 使用 Prepare 语句和 Query 是安全的,但如果我使用函数 Select(使用 $1、$2)和函数 NamedQuery(使用 struct named)怎么办?
例如:
Select * from a where text = $1-> 使用这个$1安全吗? 和 例如:Select * from a where text = :text-> 这在 NamedQuery 函数中安全吗?
请各位大侠指教。谢谢!
【问题讨论】:
-
这也可能解决一些细节问题:medium.com/avitotech/…
标签: sql postgresql go sql-injection