Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何避免查询中的SQL注入_Python_Sql_Sql Injection - Fatal编程技术网

Python 如何避免查询中的SQL注入

Python 如何避免查询中的SQL注入,python,sql,sql-injection,Python,Sql,Sql Injection,我在python代码中的SQL查询构造是: query = ''' SELECT {return_col} FROM {table_name} '''.format(colA, tableA) 当我运行Bandit安全工具时,它说“通过基于字符串的查询构造可能的SQL注入向量。” 我如何避免它 最佳实践建议避免动态生成查询,而是使用参数化查询。但目标恰恰是避免您在这里所做的事情:防止伪造参数以允许任意查询 如果您知道为什么允许查询任何表上的任何字段,并且运行查询的帐户对数据库只有SEL

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

query = '''
SELECT {return_col} 
FROM {table_name}   
'''.format(colA, tableA)
当我运行Bandit安全工具时,它说“通过基于字符串的查询构造可能的SQL注入向量。”


我如何避免它

最佳实践建议避免动态生成查询,而是使用参数化查询。但目标恰恰是避免您在这里所做的事情:防止伪造参数以允许任意查询

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


但是请检查一下安全问题。在某些用例中,它可能是完美的,在另一些用例中,它可能是糟糕的。

标识符通常不能绑定在占位符中。使其更安全的一些方法(可能避免警告):使用已批准标识符的白名单;确保引用所有标识符;使用ORM/动态查询生成器;统一查询,这样就不需要外部提供的动态标识。我绝对不是数据库方面的专家,但我使用任何数据库包中的帮助函数。请参见此处的一些示例:用户输入。限制使用任何非必要的特殊字符(例如:减号、引号…),并在投入生产之前进行大量测试,以确保您使用的第三方工具或您编写的用于执行卫生工作的功能按预期工作。