我在测试客户的查询时遇到了一个有趣的问题。恶意黑客 SQL 是否可以注入(inject)以下查询:
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
是一个输入参数,填写您喜欢的语言提供的任何功能。
关于mysql - SQL 注入(inject)和多行注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12938703/