【发布时间】:2021-10-13 18:09:26
【问题描述】:
我正在开发一个项目,该项目有很多在 python 中运行的查询。当我执行强盗检查时,我看到了问题 -
Test results:
>> Issue: [B608:hardcoded_sql_expressions] Possible SQL injection vector through string-based query construction.
Severity: Medium Confidence: Low
Location: main.py:160
More Info: https://bandit.readthedocs.io/en/latest/plugins/b608_hardcoded_sql_expressions.html
我使用原始 SQL 查询的所有地方都存在此问题。
如何修改字符串插值来解决问题?
示例代码 -
import pandas as pd
table_name = "orders"
df = pd.read_sql(sql=f'''
SELECT * FROM {table_name};
''')
我尝试了以下方法,但没有成功。
import pandas as pd
table_name = "orders"
# Try 1
df = pd.read_sql(sql='''
SELECT * FROM {};
'''.format(table_name))
# Try 2
df = pd.read_sql(sql='''
SELECT * FROM %s;
''' %(table_name,))
我关注了this blog,但我可能无法使用来自psycopg2 的cursor 对象。所以,需要一些可以帮助字符串格式化和插值的东西,因为我可以在 pandas 库中使用它。
【问题讨论】:
标签: python pandas sql-injection bandit-python