2014-09-11 98 views
0

我制作了一个页面,用户可以在textarea中插入一个查询,当他们点击提交按钮时,它会生成一个填充了该查询数据的表格。不允许用户从查询中编辑数据库

现在我想确保用户不能使用其他类型的查询,例如:INSERT,DROP,ALTER,UPDATE,RENAME和其他所有可以编辑数据库中表的数据。

我找不到任何好的例子。 (或没有正确搜索)

这样做的最佳方法是什么?

+0

你有没有考虑搜索单词“insert”/“drop”/“alter”等,如果找到了,那么只是给出一个错误信息? – 2014-09-11 11:46:31

+2

您可以为新的MySQL用户设置所需的权限并使用该用户连接到数据库。无法绕过,因此它非常安全。 – 2014-09-11 11:47:21

+0

你可以创建一个带有选项的表单,当表单被提交时,它会创建查询并执行它。别再担心了。 – machineaddict 2014-09-11 11:52:39

回答

0

如果使用MySQL并限制DML的dbuser,则可以使用GRANT。我不知道确切的语法。或者您也可以通过regexstripos

2

为此创建一个新用户来验证查询。该用户应该只有SELECT访问数据库。

GRANT SELECT ON database_name.* TO 'someuser'@'somehost'; 

利用这种方法,你不必用正则表达式的混乱(除非你想客户端验证),这样即使您的验证失败,数据库本身会妥善处理的权限。

您的表单需要使用someuser来连接并运行查询,而不是应用程序其余部分使用的用户。

相关问题