【发布时间】:2019-11-15 00:49:14
【问题描述】:
我正在尝试生成类似的 SQL 查询
SELECT FirstName,
LastName
FROM Names
WHERE (FirstName LIKE '%FNameA%' OR FirstName LIKE '%FNameB%' ....OR FirstName LIKE '%FNameN%')
AND (LastName LIKE '%LNameA%'OR LastName LIKE '%LNameB%'..... OR LastName LIKE '%LNameN%')
在 python 中动态并使用 pyodbc 在 Microsoft SQL 服务器上运行它。我只是想知道在这里避免 SQL 注入漏洞的最佳做法是什么。
例如,对于输入数量已知的查询,我可以使用绑定参数将任何输入转义到查询中
"SELECT * FROM mytable WHERE colx = ? AND coly = ?", (x, y).
有没有办法使用参数来构造具有任意数量的“Fnames”和“LNames”的第一个示例名称搜索查询?
【问题讨论】:
-
您必须动态创建具有所需参数数量的查询字符串。
-
参数不会被替换在带引号的字符串中。必须是
LIKE '%' + %s + '%'