mysql - 向公众开放 SQL 读取权限,不允许滥用

标签 mysql sql

我正在考虑允许公众对公共(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/

相关文章:

mysql - 重复的列名 'user_id'问题

MySQL 查询计算唯一列的行数

c++ - ODBC、SQL_SUCCESS_WITH_INFO、游标类型已更改 - 发生在具有单个 SELECT 的存储过程上

sql - 当相关行可能不存在时从连接表中进行选择

sql - SQL查询从多个等级/组中选择第一等级1行

sql - 如何在JOIN查询中匹配多个条件

sql - 从原始表创建新的表结构

phpmyadmin 在大型表的限制子句中使用指数(例如 : 1. 6E32)

MYSQL - 查找列是否具有不同的值..?

php - 如何在 pdo 语句中绑定(bind)限制值?