这是一种在沙箱/隔离中执行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)。
发布于 2021-12-01 15:21:05
对于任何遇到这个问题的人。
发布于 2017-03-26 23:05:23
一种解决方案是设置(至少)该生产数据库的一个从数据库。您可以在此处阅读有关实现主从复制的信息:https://dev.mysql.com/doc/refman/5.7/en/replication.html
您可以使用一个从数据库对其执行各种操作,而不是在生产数据库上运行它们(应该设置为主数据库):
您可以滥用该从属数据库,即使您破坏了它,它也不会损害您的生产数据库。
发布于 2017-03-28 19:20:06
我目前的解决方案,试图证明它是安全的:
https://stackoverflow.com/questions/43029997
复制相似问题