2

我开始编写一个与数据库一起使用的 Python 应用程序。阅读准备好的语句,我发现我应该如何编写它们:

...
strSQL = "select * from myTable where aField = $s" % (aValue)
cursor.execute(strSQL)
...

我的问题是:这是否容易受到 SQL 注入的影响?如果是这样,我该如何预防?

谢谢

4

2 回答 2

5

您正在使用字符串格式化运算符而不是绑定 SQL 参数,因此您的代码确实存在 SQL 注入的风险(一旦您修复了$s,我认为这是一个错字)。

正确的形式是:

strSQL = "select * from myTable where aField = %s"
cursor.execute(strSQL, [aValue])
于 2013-04-25T18:32:33.857 回答
1

你拥有它的方式,绝对!以下是您将如何“帮助”绕过 sql 注入

strSQL = "select * from myTable where aField = %s"
cursor.execute(strSQL, [aValue])

将值作为列表/元组传递给游标执行的第二个参数

于 2013-04-25T18:32:56.567 回答