【发布时间】:2021-12-07 07:15:28
【问题描述】:
我有一个原始的 SQL 查询:
f"SELECT FIELDS(ALL) from xxxx WHERE CreatedDate >= {start_time}"
我想让该查询免受 sql 注入攻击,但我不知道我怎么知道我做对了。 这是应该安全的新版本:
f"SELECT FIELDS(ALL) from xxxx WHERE CreatedDate >= %s" % (start_time,)
我在 API 调用中使用它。查询本身将在另一方(第三方)中执行。我想在 api 调用中将查询作为参数发送 我想得到一些关于这个问题的提示 谢谢!
【问题讨论】:
-
您使用什么库/框架来执行查询?
-
任何从基本字符串格式化方法构造的 SQL 查询都容易受到注入,您需要使用数据库库的参数化实用程序来确保正确转义值。
-
我肯定不会是唯一一个不赞成在 API 中使用 Sql 的人吗?这主要表明 API 缺乏某些功能。
-
@Sprint21 你能添加更多关于 API 的信息吗?如果您不能按名称提及它,您是否可以查看它是否有任何参数化选项(请参阅下面的答案以获取示例)?
标签: python sql sql-injection