sql injection violation, syntax error: syntax error, error in :‘**‘expect IDENTIFIER, actual IDENTIF

本文目录

一、背景描述

二、错误原因

三、解决方案

3.1 方案一

3.2 方案二


java.sql.SQLException: sql injection violation, syntax error: syntax error, error in :'soft YaHei UI'"><span style="color:', expect IDENTIFIER, actual IDENTIFIER pos 1935, line 5, column 1136, token IDENTIFIER YaHei

一、背景描述

项目架构:Springboot(2.0.1) + Mybatis(3.4.1) + CKEditor(4.8)

最近在发布文章的时候后台SQL语句突然报错,java.sql.SQLException: sql injection violation, syntax error: syntax error, error in :'soft YaHei UI'"><span style="color:', expect IDENTIFIER, actual IDENTIFIER pos 1935, line 5, column 1136, token IDENTIFIER YaHei,说是SQL注入有问题;一直都在线上稳定运行,怎么突然就报SQL异常了呢?下图是MyBatis打印出来的SQL语句,经过分析得出,Microsoft YaHei UI被识别为分隔符了。最终导致SQL INSERT语句报错。

二、错误原因

根据日志打印出来的报错信息,java.sql.SQLException: sql injection violation, syntax error: syntax error, error in :'soft YaHei UI'"><span style="color:', expect IDENTIFIER, actual IDENTIFIER pos 1935, line 5, column 1136, token IDENTIFIER YaHei,SQL异常,语法错误,分析得出,肯定是SQL语句拼装的不正确导致注入失败。将日志信息复制到数据库中,美化SQL对比得出,我发布文章的时候,有字符被识别为分隔符了,结果就是SQL注入失败。

三、解决方案

根据错误原因,可以得出解决方案有以下几个:

3.1 方案一

在富文本编辑器里把被识别为分隔符的符号或者文字删除,然后重新交给Mybatis解析即可。

3.2 方案二

修改富文本编辑器里的文字字体,只要不被Mybatis识别为分隔符即可。针对本次错误,我采取的方案是,将富文本编辑器里的文字字体由微软雅黑改为宋体。

完结!

猜你喜欢

转载自blog.csdn.net/weixin_44299027/article/details/114027968