我正在创建一个允许用户构造复杂 SELECT 语句的应用程序。生成的 SQL 是不可信的,完全是任意的。
我需要一种方法来相对安全地执行不受信任的 SQL。我的计划是创建一个仅对相关架构和表具有 SELECT 权限的数据库用户。不受信任的 SQL 将作为该用户执行。
这有什么可能出错?:)
如果我们假设 postgres 本身没有严重漏洞,那么用户可能会进行大量交叉连接并导致数据库过载。这可以通过会话超时来缓解。
我觉得还有很多事情不会出错,但我很难拿出一份清单。
编辑:
根据到目前为止的评论/答案,我应该注意到在任何给定时间使用此工具的人数将非常接近 0。