Druid 的 WallFilter 抛出 sql injection violation, comment not allow 问题的解决方法
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 原因
- 在数据源配置时,加上了 Druid 的 wall 过滤器。而它默认的拦截策略是,不允许 SQL 中带有备注。
- 在该条 SQL 语句中,果然加了备注。
3 解决
- 如果是新项目,SQL 语句较少,那么可以去除语句中的备注。
- 如果是老项目,那么就必须对 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 问题的解决方法相关推荐
- druid报异常 “sql injection violation, part alway true condition not allow”的解决方案
使用durid连接池组件,执行sql时发现异常如下: Caused by: java.sql.SQLException: sql injection violation, part alway tru ...
- druid sql黑名单 报异常 sql injection violation, part alway true condition not allow
最近使用druid,发现阿里这个连接池 真的很好用,可以监控到连接池活跃连接数 开辟到多少个连接数 关闭了多少个,对于我在项目中查看错误 问题,很有帮助, 但是最近发现里面 有条sql语句 被拦截了, ...
- Druid sql injection violation, part alway false condition not allow
在使用druid的时候很简单的一条sql报了错,如下 select<include refid="Base_Column_List"/>from sys_user_id ...
- 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 ...
- java todo error_java.sql.SQLException: sql injection violation, syntax error: TODO UNIQUE unique
@wenshao 你好,想跟你请教个问题: 我是在用activiti工作流的时候 初始化生成流程表产生了下面的问题 工作流引擎代码: ProcessEngineConfiguration confi ...
- 使用Mybatis时由于粗心遇到Cause: java.sql.SQLException: sql injection violation异常
使用Mybatis插入数据时,由于粗心书写错误导致出现Cause: java.sql.SQLException: sql injection violation异常,SQL语句如下: <inse ...
- 解决 Error querying database. Cause: java.sql.SQLException: sql injection violation....
解决 Error querying database. Cause: java.sql.SQLException: sql injection violation- 最近在开发的时候老板的需求就是将模 ...
- sql injection violation, part alway false condition not allow
今天做需求碰到了这个问题,sql injection violation, part alway false condition not allow,有的说改druid配置文件,将filters中的w ...
- java.sql.SQLException: sql injection violation, multi-statement not allow
sql涉及到批量操作,开发环境正常执行,测试环境报错 sql injection violation, multi-statement not allow : update eqc_area_cust ...
最新文章
- feign直接走熔断_四、Spring Cloud之熔断处理 Hystrix
- 基于Java+jsp+servlet的养老院管理系统设计和实现
- python epub.js_如何利用Python打包HTML页面为epub?
- float php 运算_PHP面试经典题目
- Java设计模式11:Facade
- WPF仿网易云音乐系列(一、左侧菜单栏:Expander+RadioButton)
- goaccess配置nginx日志解析
- C/C++对文件的读写
- InnoDB存储引擎的数据存储方式(存储模式)
- python 上传文件到服务器(模拟网页前端上传)
- hmcl手机版_hmcl启动器手机版软件下载-我的世界hmcl启动器官网版最新下载v3.3.159-飘荡下载...
- 网络通信基础知识—网络通信的发展历程
- python google地图_Google地图下载
- [附源码]java毕业设计逸尘房屋销售管理系统
- crt不能回退_CRT优化与QRS波宽度的研究进展
- 怎么解决视频时摄像头显示的画面显示绿色人影的问题
- 代码实现 —— 多项式的最大公因式(线性代数)
- 面试题汇总__CSS
- 华为Watch Buds耳机为什么降噪不好?
- ecg去噪 matlab,MATLAB,ECG,去噪,小波
热门文章
- 谷歌AI发展史:“量子霸权”将人类推进计算的火箭时代!
- 暴雪战网服务器维护时间,暴雪战网登录不上去2021
- 数组c语言抓小偷,警察抓小偷C语言源码
- txs0108e原理分析
- 美丽链——通过买套内衣读懂“区块链”?
- XML 解析错误:找不到根元素
- 迷茫与焦虑---是世界观,价值观,人生观,人格品行的形成
- mysql服务在系统盘_重装系统后恢复MySQL服务
- 第五季完美童模 形象大使滕文泽现场走秀回顾
- 市政下水道疏通机器人_疏通市政管道 机器人管道检测 好用的疏通下水道