Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.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中的MySQL查询验证_Php_Mysql_Validation - Fatal编程技术网

PHP中的MySQL查询验证

PHP中的MySQL查询验证,php,mysql,validation,Php,Mysql,Validation,我有一个发布MySQL查询的表单。这将通过PHP进一步处理。我的问题是,如果用户输入'DROP DATABASE mydb',这将是一个大问题。因此,我想知道是否有一种方法可以在发布查询之前进行验证,以便用户不会损害任何其他数据库。我们当然可以使用正则表达式。但是还有其他更好的方法吗 谢谢不要用php或正则表达式解析查询。。。或者只是数据库本身以外的任何东西,看看它是否做了有害的事情,因为这可能会变得非常复杂,你不能仅仅过滤掉不好的单词。 最好为这些用户生成的查询创建一个数据库用户,并且可能只进

我有一个发布MySQL查询的表单。这将通过PHP进一步处理。我的问题是,如果用户输入'DROP DATABASE mydb',这将是一个大问题。因此,我想知道是否有一种方法可以在发布查询之前进行验证,以便用户不会损害任何其他数据库。我们当然可以使用正则表达式。但是还有其他更好的方法吗


谢谢

不要用php或正则表达式解析查询。。。或者只是数据库本身以外的任何东西,看看它是否做了有害的事情,因为这可能会变得非常复杂,你不能仅仅过滤掉不好的单词。 最好为这些用户生成的查询创建一个数据库用户,并且可能只进行选择,而不进行更新、删除或表结构更改


²例如:从mytable中选择“删除数据库是件坏事”;绝对没问题,而且不会伤害任何东西。如果您只是在查询中查找DROP数据库,在这种情况下,您只会激怒用户…

不要使用php或正则表达式解析查询。。。或者只是数据库本身以外的任何东西,看看它是否做了有害的事情,因为这可能会变得非常复杂,你不能仅仅过滤掉不好的单词。 最好为这些用户生成的查询创建一个数据库用户,并且可能只进行选择,而不进行更新、删除或表结构更改


²例如:从mytable中选择“删除数据库是件坏事”;绝对没问题,而且不会伤害任何东西。如果您只是在查询中查找DROP数据库,在这种情况下,您只会激怒用户…

您允许用户直接输入原始查询以执行。因此,这不属于SQL注入

您需要考虑的是MySQL用户权限。对于特定的数据库用户,为此目的创建一个单独的用户,不要授予他权限,如删除、删除等。只授予您愿意允许的权限


您允许用户直接输入原始查询以执行。因此,这不属于SQL注入

您需要考虑的是MySQL用户权限。对于特定的数据库用户,为此目的创建一个单独的用户,不要授予他权限,如删除、删除等。只授予您愿意允许的权限


为什么不从sql端为该用户提供有限访问权限?您可以限制用户权限仅选择我们可以使用正则表达式以确保您高估了正则表达式为什么不从sql端为该用户提供有限访问权限?您可以限制用户权限仅选择我们可以使用正则表达式以确保您高估了正则表达式正则表达式如果我希望一个用户对一个数据库而不是任何其他数据库执行任何操作,该怎么办?因此,用户可以给查询“drop database mydb”,而不是“drop database anyotherdb”。您可以授予每个数据库甚至每个表的权限。只要看一下文档:如果我想让一个用户对一个数据库而不是任何其他数据库做任何事情,该怎么办?因此,用户可以给查询“drop database mydb”,而不是“drop database anyotherdb”。您可以授予每个数据库甚至每个表的权限。请看一下文档: