SQL注入和多行注释

时间:2012-10-17 16:14:59

标签: 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%'

不过,我可能错了。期待您的意见。提前谢谢!

2 个答案:

答案 0 :(得分:5)

请改为尝试:

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

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

答案 1 :(得分:4)

searchterm = "');drop table customers;SELECT * FROM mytable WHERE ( field1 like '"