前言

线上产品的日志表注入时有些时候会报错,排查发现都是字段中含有单引号。
  • 报错语句: INSERT INTO zone_tjlt201_user_opera(uid, area, cpid, cpkey, stbType, platform, ctype, result, operatime, pid, position, staytime, otr, createtime) VALUE('047805718803@tv', '208', '87411', 'txhy', 'IP903H_54U3M', '2', '7', 'Don't Wanna Know(HD)', '20210519224155', 'xwjyyby020@208', '***-公司名-***-08', '194', '','2021-05-19 22:41:55') 但我们产品为音乐类产品,英文歌曲或歌手名称中经常是会包含单引号:
  • 解决方法:
  1. 媒资表中将所有单引号替换为其他字符
  2. 在sql注入时将单引号转义注入
  • 分析及选择: 直接将单引号替换可解决问题,方便快捷,但体验较差。 使用转义(')注入效果较好,需要更改代码
  • 解决及发现 最终选择了转义注入,但使用时发现:要替换出' 字符串, replaceAll()需要使用4个\ 而 replace()需要3个\转义