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