请教各位大神,本菜鸡一直在想sqlite的防注入问题,有人说sqlite中通过问号占位符就能解决注入问题是不是真的呢?是不是因为占位符的实现原因呢?例如以下代码:
import sqlite3
db = sqlite3.connect("test.db")
cursor = db.cursor()
myInput = "' or 1 = 1; --"
sql = "select * from testable where passwd = '%s'"%myInput
# this will cause sql injection
cursor.execute(sql)
# this will not cause sql injection
cursor.execute("select * from testable where passwd = ?", (myInput,))
db.close()
用占位符的时候是用sqlite3_bind直接绑定的值,不用占位符是从语句中解析出的值
万分感谢