我创建了一个用户可以在textarea中放入查询的页面,当他们单击提交按钮时,它会生成一个填充了该查询数据的表。
现在我想确保用户不能使用其他类型的查询,例如:INSERT,DROP,ALTER,UPDATE,RENAME以及可以编辑数据库中表格的所有其他查询。
我找不到任何好的例子。 (或没有正确搜索)
这样做的最佳方式是什么?
答案 0 :(得分:2)
为此目的创建一个新用户。该用户应该只有SELECT
个数据库访问权限。
GRANT SELECT ON database_name.* TO 'someuser'@'somehost';
利用这种方法,您不必混淆正则表达式(除非您需要客户端验证),即使验证失败,数据库本身也会适当地处理权限。
您的表单需要使用someuser
来连接和运行查询,而不是应用程序其余部分使用的用户。
答案 1 :(得分:0)
如果使用MySQL并使用dbuser限制dML,则可以使用GRANT
。我不知道确切的语法。或者您也可以regex
或stripos