我正在考虑允许公众对公共(public)数据集进行只读 SQL 查询。以前,我在 Stack Exchange Chat PHP 页面上提到过这个,并立即遇到大量 no...no...nooooooooooo!!!!!
式的响应。
人们似乎认为这太危险了。有人将其比作给枪上安全锁并希望没有人被射中。没有人真正深入到更多细节,但有人提到了系统调用。 我的问题是我这样做会冒什么风险,可以采取什么措施来抵消这种风险(例如超时以停止无限循环)?
这SO question问题稍微涵盖了主题,但涉及部分用户可控制的查询,而不是完全控制。它也没有回答我的问题。
编辑:澄清一下,我可以采取哪些具体步骤来停止资源占用(无限循环等)。目前没有任何东西可以控制查询。查询通过 PHP 页面运行。
最佳答案
我会说去吧。
对于所有说 no...no...nooooooooooo!!!!!!
的人,考虑一下:
StackOverflow(通过 Meta Stack Exchange)向任何人提供免费访问其帖子的权限。这种访问是通过开放的 sql 格式完成的。不相信我?自己试试:https://data.stackexchange.com/stackoverflow/query/new
想要我编写的查询示例吗?这里:Tag usage over time
为了减轻暴露您的数据的危险,请考虑以下事项:
不要公开通过 sql 客户端与数据库的直接连接。考虑使用接受 SQL 查询并返回结果的网页。
分析任何可疑命令的 sql 命令。很难,我知道,但是例如,您可以阻止使用 sql 函数。
请记住,这必须在一台机器上运行,因此请考虑安全性并将这台机器与核心隔离。
考虑终止完成时间过长的查询。
不用说:不要在其中保留任何可识别/用户信息。
考虑定期刷新架构。
关于mysql - 向公众开放 SQL 读取权限,不允许滥用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23924430/