我在python代码中的SQL查询构造为:
query = '''
SELECT {return_col}
FROM {table_name}
'''.format(colA, tableA)
当我运行Bandit安全工具时,它说通过基于字符串的查询构造可能的SQL注入向量。
如何避免呢?
最佳做法建议避免动态构建查询,而应使用参数化查询。但目标恰恰是避免您在此做什么:防止使用伪造的参数来允许任意查询。
如果知道为什么允许查询任何表中的任何字段,并且如果运行查询的帐户仅对数据库具有SELECT特权,那么您可以忽略该警告:它只是说您可以允许对任何表进行请求。 ..您想做什么!
但是请检查安全隐患。在某些情况下,它可能很好,而在另一些情况下,则可能很糟糕。