首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用沙箱/隔离执行sql查询

使用沙箱/隔离执行sql查询
EN

Stack Overflow用户
提问于 2017-03-26 22:28:25
回答 3查看 311关注 0票数 2

这是一种在沙箱/隔离中执行SQL(基本只读语句)的方法吗?像subquery(真的安全吗?),SQL Emulator(https://github.com/maciakl/jQuery-SQL-Emulator,buggy and slow),ROLLBACK(可能也很慢,也很难保证安全)和CREATE TEMPORARY将是一个选择,但我希望能找到更好的东西。

这是一个真实的案例:

我试图使一个报告工具,能够自定义SQL的用户(选择或加入或计数或总和等,并输出为csv)。然而,让用户在生产数据库中执行SQL是非常危险的。还有更好的建议吗?

附注:我的平台是MySQL+PHP+JS

更新:

重点是,我可以创建一个只读的MySQL帐户。但这并不能阻止用户在单个表中查询一些本应不可访问的行(例如,检入表中的记录、表中的where department_id = xx和staffs列表、where department_id = xx)。

EN

回答 3

Stack Overflow用户

发布于 2021-12-01 15:21:05

对于任何遇到这个问题的人。

  1. 检查列表中是否有任何函数/语句(您的列表应包含可用于获取系统信息的所有函数/语句)这些表名仅接受用户的输入select as table_name.column_name
  2. use这些表名要创建连接查询
  3. 在where中添加筛选条件,例如,排除您不希望用户看到的行
票数 1
EN

Stack Overflow用户

发布于 2017-03-26 23:05:23

一种解决方案是设置(至少)该生产数据库的一个从数据库。您可以在此处阅读有关实现主从复制的信息:https://dev.mysql.com/doc/refman/5.7/en/replication.html

您可以使用一个从数据库对其执行各种操作,而不是在生产数据库上运行它们(应该设置为主数据库):

  • run your report tool
  • run backups (您正在对数据库进行定期备份,对吧?)
  • run other tests

您可以滥用该从属数据库,即使您破坏了它,它也不会损害您的生产数据库。

票数 0
EN

Stack Overflow用户

发布于 2017-03-28 19:20:06

我目前的解决方案,试图证明它是安全的:

https://github.com/wilsonlmh/sqlSandbox

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43029997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档