我想允许我们的用户通过我们的API提交数据。我们要在where条件中将accountId
与所有过滤器(由用户提供)一起应用。我不是我们的用户来操纵帐户ID。与帐户ID一起应用过滤器的安全性是什么?
我们希望避免使用任何sql injection
并获得所有accountIds
的结果。
我们正在考虑编写子查询。我们真的怀疑表演。
常规查询:
select any(accountId), appName, avg(duration) from performance_table where
accountId = '500' and eventDateTime >= now() - 30 * 60 and env = "production"
group by appName order by appName limit 10
使用子查询:
子查询1:
select any(accountId), appName, avg(duration) from (select * from
performance_table where
accountId = '500' and eventDateTime >= now() - 30 * 60) where env = "production"
group by appName order by appName limit 10
子查询2:
select * from (select any(accountId), appName, avg(duration) from performance_table
where accountId = '500' and eventDateTime >= now() - 30 * 60
where env = "production" group by appName order by appName limit 10) where accountId = '500'
能否请您提出安全的做法?
答案 0 :(得分:1)
如果我理解正确,则可以通过在accountId = '500'
之前加上where子句并生成类似的内容来实现该目标
.... where accountId = '500' and ( <user predicates> )