Druid的double const condition防注入拦截项如何在Jfinal中配置

场景

Druid 为避免 sql 注入当拼接的 sql 语句多于一处 1=1 时,项目报错:

java.sql.SQLException: sql injection violation, double const condition :

思路

查了druid配置项后,发现一处可配置

conditionDoubleConstAllow:false // 改为 true

难点是目前的项目底层封装到了jar包里面,我无法修改源码,也不能单纯的重写一个方法来加入这个规则。

目前的思路是:

  1. 找到获取 plugin 的方法

  2. 在项目启动后修改 plugin


但是经过尝试我不知道怎么才能拿到plugins,还有取出里面的 Druidplugin 是否有方法支持?


评论区

杜福忠

2018-02-05 21:35

问题一,拿到plugins :
1, 在 /WEB-INF/web.xml 里面有 一个继承自JFinalConfig类的子类,该类用于对整个web项目进行配置。
例如手册: 2.1 概述
2,找到public void configPlugin(Plugins me) 方法:
2.5 configPlugin(..)
参数列表Plugins me 就是它了。
当然 new Druidplugin (...) 一般也在这里写的, 所以直接用就好。

问题二,Druidplugin 是否有方法支持:
源码中有这个方法:防SQL注入:"wall"

/**
* 设置过滤器,如果要开启监控统计需要使用此方法或在构造方法中进行设置
*


* 监控统计:"stat"
* 防SQL注入:"wall"
* 组合使用: "stat,wall"
*


*/
public DruidPlugin setFilters(String filters) {
this.filters = filters;
return this;
}

但是我没有试过, 你可以自己试试。
还有一个大招:

public DataSource getDataSource() {
return ds;
}

热门反馈

扫码入社