【发布时间】:2017-02-25 04:01:31
【问题描述】:
我有一个应用程序,我想在其中接受来自前端查询构建器 (http://querybuilder.js.org/) 的用户提供的 SQL 查询。该查询最终需要在 postgres 数据库中运行以返回数据子集。
上面链接的查询生成器可以导出 SQL 或 mongo 查询。我想使用 mongo 查询相对安全,因为我可以简单地在服务器上添加:
query.owner_of_document = userId
限制结果(仅限用户拥有的文档)。
而如果有人试图存储恶意 SQL 字符串以供执行,则 SQL 语句可能会在注入攻击中被劫持。
直接从客户端接受 SQL 是不好的做法吗?如何确保提供的 SQL 是安全的?
谢谢!
【问题讨论】:
-
尝试定义 safe,你会发现在 SQL 中很难确定(想想常见的表表达式、子选择等)
标签: sql mongodb postgresql sql-injection