Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 不允许用户从查询中编辑数据库_Php_Mysql_Sql - Fatal编程技术网

Php 不允许用户从查询中编辑数据库

Php 不允许用户从查询中编辑数据库,php,mysql,sql,Php,Mysql,Sql,我制作了一个页面,用户可以在文本区域中输入查询,当他们单击submit按钮时,它会生成一个表格,其中填充了来自该查询的数据 现在,我想确保用户不能使用其他类型的查询,例如:插入、删除、更改、更新、重命名和所有其他可以编辑数据库中表的查询 GRANT SELECT ON database_name.* TO 'someuser'@'somehost'; 我找不到任何好的例子。(或搜索不正确) 做这件事的最佳方法是什么?如果使用MySQL和restrict dbuser for DMLs,您可以使

我制作了一个页面,用户可以在文本区域中输入查询,当他们单击submit按钮时,它会生成一个表格,其中填充了来自该查询的数据

现在,我想确保用户不能使用其他类型的查询,例如:插入、删除、更改、更新、重命名和所有其他可以编辑数据库中表的查询

GRANT SELECT ON database_name.* TO 'someuser'@'somehost';
我找不到任何好的例子。(或搜索不正确)


做这件事的最佳方法是什么?

如果使用MySQL和restrict dbuser for DMLs,您可以使用
GRANT
。我不知道确切的语法。或者您也可以通过
regex
stripos

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

GRANT SELECT ON database_name.* TO 'someuser'@'somehost';
使用此方法,您不必处理regex(除非您需要客户端验证),即使验证失败,数据库本身也会适当地处理权限


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

您是否考虑过搜索单词“insert”/“drop”/“alter”等,如果找到,然后只给出一条错误消息?您可以为新的MySQL用户设置所需的权限,并与该用户连接到数据库。无法绕过,因此它非常安全。您可以创建一个带有选项的表单,当表单提交时,它将创建查询并执行它。别再担心了。