开发者社区> 问答> 正文

Wall过滤器误报SQL解析错误:ERROR. token : QUESBAR

错误如下:

Caused by: java.sql.SQLException: sql injection violation, syntax error: ERROR. token : QUESBAR, pos : 173 : SELECT TMP_PAGE., ROWNUM ROW_ID FROM ( SELECT M., A.* FROM T_EW_MERCHANT M LEFT JOIN LP_ADDRESS A ON M.ADDRESS_KEY = A.KEY

		WHERE M.MERCHANT_CODE LIKE '%'||?||'%'
		OR
		M.MERCHANT_NAME LIKE '%'||?||'%'
		OR M.MERCHANT_NAME LIKE
		'%'||?||'%'
		OR M.CERTIFICATE LIKE
		'%'||?||'%'
		OR M.OWNER
		LIKE
		'%'||?||'%'
		OR A.COUNTRY LIKE
		'%'||?||'%'
		OR
		A.PROVINCE LIKE
		'%'||?||'%'
		OR A.CITY LIKE
		'%'||?||'%'
		OR A.COUNTY LIKE
		'%'||?||'%'
		OR A.STREET_AREA LIKE
		'%'||?||'%'
		OR A.DETAILE LIKE
		'%'||?||'%'
		OR A.ZIPCODE
		LIKE
		'%'||?||'%' ) TMP_PAGE WHERE ROWNUM <= 10

版本:

com.alibaba druid 1.0.31

原提问者GitHub用户roc-cn

展开
收起
山海行 2023-07-05 20:59:10 149 0
3 条回答
写回答
取消 提交回答
  • 根据提供的错误信息,这个问题似乎是由于Druid的Wall过滤器误报了SQL语句中的某些字符导致的。具体来说,Wall过滤器将 QUESBAR 作为一个错误的令牌(token)并报告了一个语法错误。

    这种情况下,你可以考虑以下解决方案:

    1. 检查SQL语句中的占位符。确保你正确地使用了占位符,并且在执行SQL查询时提供了正确的参数值。

    2. 更新Druid版本。尝试更新到最新版本的Druid,以获取修复可能存在的问题的最新补丁。

    3. 调整Wall过滤器的配置。如果认为Wall过滤器误报了这个错误,你可以尝试调整Wall过滤器的配置,设置更宽松的规则,或者禁用Wall过滤器。

    4. 查阅文档和社区支持。查阅Druid的文档和相关社区支持,寻找类似问题和解决方案的建议。

    如果以上方法无法解决问题,建议进一步检查SQL语句和相关代码的逻辑,以排除其他可能的错误或漏洞。

    2023-07-30 14:36:32
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    根据你提供的信息,可能是由于阿里巴巴数据库防火墙 (Wall) 过滤器误报了 SQL 语句中的某些字符,导致 SQL 解析错误。

    你的 SQL 语句中包含了一个占位符 (QUESBAR),可能是 Wall 过滤器误判了这个字符为 SQL 注入风险导致的。

    你可以尝试排除 Wall 过滤器的干扰,看看是否能够解决这个问题。你也可以在 Wall 过滤器的配置中,将其调整为更宽松的模式,以避免类似的误报问题。

    2023-07-30 13:06:12
    赞同 展开评论 打赏
  • 问题已修复,请用新版本 https://github.com/alibaba/druid/releases/tag/1.1.14

    原回答者GitHub用户wenshao

    2023-07-06 11:47:37
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
神龙云服务器产品及技术深度解析 立即下载
弹性创造价值:基于ECS的最佳性价比实践解析 立即下载
又快又稳:阿里云下一代虚拟交换机解析 立即下载

相关镜像