如何避免 SQL 查询注入

How to avoid SQL injection on query

我在 python 代码中的 SQL 查询结构是:

query = '''
SELECT {return_col} 
FROM {table_name}   
'''.format(colA, tableA)

当我 运行 Bandit 安全工具时,它显示 "Possible SQL injection vector through string-based query construction."

如何避免?

最佳做法建议避免动态构建查询,而是使用参数化查询。但目标恰恰是为了避免你在这里做的事情:防止伪造参数允许任意查询。

如果您知道为什么允许查询任何 table 上的任何字段,并且如果帐户 运行 查询仅对数据库具有 SELECT 权限,那么您可以忽略警告:它只是说你可以允许对任何table...你想做什么的请求!

但请检查安全隐患。在某些用例中它可能非常好,在其他情况下它可能很糟糕。