我开始编写一个与数据库一起使用的 Python 应用程序。阅读有关准备好的陈述时,我发现了应该如何编写它们:
...
strSQL = "select * from myTable where aField = $s" % (aValue)
cursor.execute(strSQL)
...
Run Code Online (Sandbox Code Playgroud)
我的问题是:这是否容易受到 SQL 注入攻击?如果是这样,我该如何预防?
谢谢
您使用的是字符串格式化运算符而不是绑定的 SQL 参数,因此您的代码确实面临 SQL 注入的风险(一旦修复了$s,我认为这是一个拼写错误)。
正确的形式是:
strSQL = "select * from myTable where aField = %s"
cursor.execute(strSQL, [aValue])
Run Code Online (Sandbox Code Playgroud)