mysql - SQL 注入(inject)和多行注释

标签 mysql sql oracle sql-injection

我在测试客户的查询时遇到了一个有趣的问题。恶意黑客 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/

相关文章:

sql - 行编号和子分组

php - 如何将 codeigniter 数据库的数据与 wordpress 数据库同步?有可用的 API 吗?

php - mysql 数据库中存储的奇怪数据

php - Typo3 V6 : How to create a content element container?(不带电视)

Oracle - 将日期值转换为 TO_CHAR()

sql - 从oracle sql脚本中免除星期日

mysql - 查询以获取列中包含两个连续零的行

java - H2数据库中的字符集

sql - 使用 1 个查询插入多行

sql - Postgres 在使用 date() 函数时不使用索引