在SQL查询中筛选帐户id或用户id的安全方法
我想允许我们的用户通过我们的API来归档数据。我们希望在where条件下应用在SQL查询中筛选帐户id或用户id的安全方法,sql,clickhouse,Sql,Clickhouse,我想允许我们的用户通过我们的API来归档数据。我们希望在where条件下应用accountId以及所有过滤器(由用户提供)。我不希望我们的用户操纵帐户ID。在帐户ID的同时应用过滤器的安全性是什么 我们希望避免任何sql注入,并为所有accountid获取结果。 我们正在考虑编写子查询。我们真的怀疑这些表演 普通查询: select any(accountId), appName, avg(duration) from performance_table where accountId = '5
accountId
以及所有过滤器(由用户提供)。我不希望我们的用户操纵帐户ID。在帐户ID的同时应用过滤器的安全性是什么
我们希望避免任何sql注入
,并为所有accountid
获取结果。
我们正在考虑编写子查询。我们真的怀疑这些表演
普通查询:
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
使用子查询:
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:
子问题2:
你能建议一种安全的方法吗?如果我理解正确,你可以通过在where子句前面加上
accountId='500'
并生成类似
.... where accountId = '500' and ( <user predicates> )
。。。。其中accountId='500'和()
子查询在这里有什么帮助?您使用哪种语言/框架实现API?Node.js和Go。到目前为止,我们是在Node.js中完成的。@sskoko我认为子查询将被父查询过滤。我不确定。选择accountId、appName、avg(duration)…按appName分组在我看来似乎是一个错误的查询。。误用MySQL分组依据
“功能”
.... where accountId = '500' and ( <user predicates> )