我正在测试客户的查询,并遇到了一个有趣的问题。一个不好意图的黑客SQL会注入以下查询:
SELECT * FROM mytable WHERE 1
AND cfield='0'
AND (
field1 like '%$searchterm%' OR
field2 like '%$searchterm%' OR
)
例如,在我看来,他无法评论第一个$ searchterm之后的内容,只是插入其他查询:
field1 like '%$searchterm%'
不过,我可能错了。期待您的意见。提前谢谢!
答案 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 '"