Mysql SQL注入和多行注释
我在测试一个客户的问题时遇到了一个有趣的问题。恶意黑客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%' 不过,我可能错了。期待您的意见。提前
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被选为一个很好的图形示例