我正在尝试用参数替换我的一些字符串插入。因此,我有以下代码来执行查询:
cursor.execute("DELETE FROM %s WHERE COL=%s" % ("tablename","column"))
我可以把它换成
cursor.execute("DELETE FROM tablename WHERE COL=?" , ("column"))
但我希望我的表名在一个变量中。如何防止SQL注入插入表的变量?
kr98yfug1#
如果您的目标是确保变量是有效表名称,可以使用以下命令获取表名列表SELECT name FROM sqlite_master WHERE type='table'然后检查配置文件中的变量是否与其中一个表匹配。这就避免了硬编码表的列表。
SELECT name FROM sqlite_master WHERE type='table'
1条答案
按热度按时间kr98yfug1#
如果您的目标是确保变量是有效表名称,可以使用以下命令获取表名列表
SELECT name FROM sqlite_master WHERE type='table'
然后检查配置文件中的变量是否与其中一个表匹配。这就避免了硬编码表的列表。