Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/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
Mysql SQL注入和多行注释_Mysql_Sql_Oracle_Sql Injection - Fatal编程技术网

Mysql SQL注入和多行注释

Mysql SQL注入和多行注释,mysql,sql,oracle,sql-injection,Mysql,Sql,Oracle,Sql Injection,我在测试一个客户的问题时遇到了一个有趣的问题。恶意黑客SQL是否可以注入以下查询: SELECT * FROM mytable WHERE 1 AND cfield='0' AND ( field1 like '%$searchterm%' OR field2 like '%$searchterm%' OR ) 例如,在我看来,他无法注释掉第一个$searchterm后面的内容,而只是插入其他查询: field1 like '%$searchterm%' 不过,我可能错了。期待您的意见。提前

我在测试一个客户的问题时遇到了一个有趣的问题。恶意黑客SQL是否可以注入以下查询:

SELECT * FROM mytable WHERE 1
AND cfield='0'
AND (
field1 like '%$searchterm%' OR
field2 like '%$searchterm%' OR
)
例如,在我看来,他无法注释掉第一个$searchterm后面的内容,而只是插入其他查询:

field1 like '%$searchterm%'
不过,我可能错了。期待您的意见。提前谢谢你

试试这个:

searchterm = "');drop table customers;SELECT * FROM mytable WHERE ( field1 like '"
SELECT * FROM mytable WHERE 1
AND cfield='0'
AND (
field1 like '%' || :searchterm || '%' OR
field2 like '%' || :searchterm || '%' OR
)

。。。其中
:searchterm
是一个输入参数,填充在您最喜欢的语言提供的函数中。

服务器上是否连接了$searchterm?它看起来像PHP,没有任何连接。无论在搜索输入中输入什么,都会插入其中。没有适当的消毒措施。我想说,这是一个响亮的“是”的问题,查询是不安全的,也不易受到攻击。重要的是你用来提供参数值的机制。谢谢你的回答。是的,它是PHP,我将应用一些消毒。感谢提供详细的示例。我会小心地在这些注射破坏任何东西之前对输入进行消毒。没有必要对任何东西进行消毒。用事先准备好的陈述。哦,太好了,明白你的意思了!这也是非常有用的。非常感谢。我认为这是正确的方法。Marlin被选为一个很好的图形示例