ps:

https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE-wallfilter可以对应修改参数。

如需要执行多行语句 , 要设置multiStatementAllow为true

1 现象

查询某个模块数据时,抛出以下异常:

Causedby: java.sql.SQLException: sql injection violation, comment not allow : select count(*) FROM sys_x a WHERE 1=1 --澶囨敞 AND a.organization_id NOT IN( SELECT b.descendant_id FROM sys_y b WHERE b.path_length!=0) at com.alibaba.druid.wall.WallFilter.checkInternal(WallFilter.java:800) at com.alibaba.druid.wall.WallFilter.connection_prepareStatement(WallFilter.java:251) at com.alibaba.druid.filter.FilterChainImpl.connection_prepareStatement(FilterChainImpl.java:473) at com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl.prepareStatement(ConnectionProxyImpl.java:342) at com.alibaba.druid.pool.DruidPooledConnection.prepareStatement(DruidPooledConnection.java:349) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.invoke(TransactionAwareDataSourceProxy.java:239) at com.sun.proxy.$Proxy23.prepareStatement(Unknown Source) at org.springframework.jdbc.core.PreparedStatementCreatorFactory$PreparedStatementCreatorImpl.createPreparedStatement(PreparedStatementCreatorFactory.java:245) at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:583) ... 59 more 复制代码

2 原因

  1. 在数据源配置时,加上了 Druid 的 wall 过滤器。而它默认的拦截策略是,不允许 SQL 中带有备注。
  2. 在该条 SQL 语句中,果然加了备注。

3 解决

  1. 如果是新项目,SQL 语句较少,那么可以去除语句中的备注。
  2. 如果是老项目,那么就必须对 Druid 的 wall 过滤器进行配置,打开项目的 XML 配置文件,配置 druid 拦截过滤器,允许 SQL 语句中存在注释:
<!--配置 druid 拦截过滤器-->
<bean id="wall-filter-config" class="com.alibaba.druid.wall.WallConfig" init-method="init"> <!-- 是否允许语句中存在注释--> <property name="commentAllow" value="true" /> </bean> <bean id="wall-filter" class="com.alibaba.druid.wall.WallFilter"> <property name="config" ref="wall-filter-config" /> </bean> 复制代码

然后在 Druid 数据源配置中,加入 Druid 拦截过滤器:

<!--druid 数据源-->
<bean id="druidDataSource" class="com.alibaba.druid.pool.DruidDataSource"> ... <!--配置 Druid 过滤器--> <property name="proxyFilters"> <list> ... <ref bean="wall-filter"/> </list> </property> ... </bean> 复制代码

重启应用,看看问题是不是已经解决啦O(∩_∩)O哈哈~

Druid 的 WallFilter 抛出 sql injection violation, comment not allow 问题的解决方法相关推荐

  1. druid报异常 “sql injection violation, part alway true condition not allow”的解决方案

    使用durid连接池组件,执行sql时发现异常如下: Caused by: java.sql.SQLException: sql injection violation, part alway tru ...

  2. druid sql黑名单 报异常 sql injection violation, part alway true condition not allow

    最近使用druid,发现阿里这个连接池 真的很好用,可以监控到连接池活跃连接数 开辟到多少个连接数 关闭了多少个,对于我在项目中查看错误 问题,很有帮助, 但是最近发现里面 有条sql语句 被拦截了, ...

  3. Druid sql injection violation, part alway false condition not allow

    在使用druid的时候很简单的一条sql报了错,如下 select<include refid="Base_Column_List"/>from sys_user_id ...

  4. Oracle Caused by: java.sql.SQLException: sql injection violation, syntax error: syntax error, expect

    参考:https://blog.csdn.net/qq_36326332/article/details/102938147 https://blog.csdn.net/fly_captain/art ...

  5. java todo error_java.sql.SQLException: sql injection violation, syntax error: TODO UNIQUE unique

    @wenshao 你好,想跟你请教个问题: 我是在用activiti工作流的时候  初始化生成流程表产生了下面的问题 工作流引擎代码: ProcessEngineConfiguration confi ...

  6. 使用Mybatis时由于粗心遇到Cause: java.sql.SQLException: sql injection violation异常

    使用Mybatis插入数据时,由于粗心书写错误导致出现Cause: java.sql.SQLException: sql injection violation异常,SQL语句如下: <inse ...

  7. 解决 Error querying database. Cause: java.sql.SQLException: sql injection violation....

    解决 Error querying database. Cause: java.sql.SQLException: sql injection violation- 最近在开发的时候老板的需求就是将模 ...

  8. sql injection violation, part alway false condition not allow

    今天做需求碰到了这个问题,sql injection violation, part alway false condition not allow,有的说改druid配置文件,将filters中的w ...

  9. java.sql.SQLException: sql injection violation, multi-statement not allow

    sql涉及到批量操作,开发环境正常执行,测试环境报错 sql injection violation, multi-statement not allow : update eqc_area_cust ...

最新文章

  1. feign直接走熔断_四、Spring Cloud之熔断处理 Hystrix
  2. 基于Java+jsp+servlet的养老院管理系统设计和实现
  3. python epub.js_如何利用Python打包HTML页面为epub?
  4. float php 运算_PHP面试经典题目
  5. Java设计模式11:Facade
  6. WPF仿网易云音乐系列(一、左侧菜单栏:Expander+RadioButton)
  7. goaccess配置nginx日志解析
  8. C/C++对文件的读写
  9. InnoDB存储引擎的数据存储方式(存储模式)
  10. python 上传文件到服务器(模拟网页前端上传)
  11. hmcl手机版_hmcl启动器手机版软件下载-我的世界hmcl启动器官网版最新下载v3.3.159-飘荡下载...
  12. 网络通信基础知识—网络通信的发展历程
  13. python google地图_Google地图下载
  14. [附源码]java毕业设计逸尘房屋销售管理系统
  15. crt不能回退_CRT优化与QRS波宽度的研究进展
  16. 怎么解决视频时摄像头显示的画面显示绿色人影的问题
  17. 代码实现 —— 多项式的最大公因式(线性代数)
  18. 面试题汇总__CSS
  19. 华为Watch Buds耳机为什么降噪不好?
  20. ecg去噪 matlab,MATLAB,ECG,去噪,小波

热门文章

  1. 谷歌AI发展史:“量子霸权”将人类推进计算的火箭时代!
  2. 暴雪战网服务器维护时间,暴雪战网登录不上去2021
  3. 数组c语言抓小偷,警察抓小偷C语言源码
  4. txs0108e原理分析
  5. 美丽链——通过买套内衣读懂“区块链”?
  6. XML 解析错误:找不到根元素
  7. 迷茫与焦虑---是世界观,价值观,人生观,人格品行的形成
  8. mysql服务在系统盘_重装系统后恢复MySQL服务
  9. 第五季完美童模 形象大使滕文泽现场走秀回顾
  10. 市政下水道疏通机器人_疏通市政管道 机器人管道检测 好用的疏通下水道