我将为我在其中一个网站上的开发人员提供类似data.stackexchange.com的SQL控制台。问题是我不能让他们执行所有类型的SQL。所以会有一些约束。以下是一些示例约束
COUNT()
功能LIMIT
,其中包含最大值100
5
SELECT
个语句。我使用正则表达式来过滤这些。还计划在执行之前调用EXPLAIN或类似查询以确定其对db的影响。
有没有比正则表达更好的方法?它是如何在data.SE上完成的?还有什么我应该担心的吗?
可以通过限制数据库服务器中的用户权限来应用这两个规则。
SELECT
个语句。所以唯一的问题是验证SQL
我知道如果我写一个SQL解析器就行了。这就像编写JS解释器一样,删除eval()
作为其不良做法。因此,从头开始编写SQL解析器实际上不是一种选择。这里。