最近我在 nodejs Web 应用程序中使用 mysqljs。
我想转义我在 SQL 中的所有参数以防止注入攻击。
但是在 LIKE 模式中,SQL 会受到转义字符串符号 ` 的影响
Here is my query
SELECT event.name, host.name, Guest.name
FROM Event as event
LEFT JOIN Host on Host._id = event.host_id
LEFT JOIN Event_Guest on Event_Guest.event_id = Event._id
LEFT JOIN Guest on Event_Guest.guest_id = Guest._id
WHERE host._id = event.host_id AND event.status IN ('on', 'off') AND
( event.name LIKE "%?%" escape "'" OR host.name LIKE "%?%" OR guest.name LIKE "%?%")
LIMIT ?, ?;
`, [cond, cond, cond, skip, limit])
如果我申请mysql.escape(cond)
,SQL 将是LIKE "%'cond'%"
。
单引号会影响结果。
如何转义参数并保留原始 SQL?