跳到内容

硬编码 SQL 表达式 (S608)

源自 flake8-bandit linter。

作用

检查涉及某种字符串构建操作的类似 SQL 语句的字符串。

为什么这不好?

SQL 注入是 Web 应用程序常见的攻击向量。应始终避免将用户输入直接插入到 SQL 语句中。相反,应优先使用参数化查询,其中 SQL 语句与其参数是分开提供的,这得到 psycopg3 和其他数据库驱动程序及 ORM 的支持。

示例

query = "DELETE FROM foo WHERE id = '%s'" % identifier

参考