SQL注入监控神器—Druid
Posted i春秋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL注入监控神器—Druid相关的知识,希望对你有一定的参考价值。
i春秋社区
简介
Druid是阿里巴巴开源平台上的一个项目,整个项目由数据库连接池、插件框架和SQL解析器组成。该项目主要是为了扩展JDBC的一些限制,可以让程序员实现一些特殊的需求,比如向密钥服务请求凭证、统计SQL信息、SQL性能收集、SQL注入检查、SQL翻译等,程序员可以通过定制来实现自己需要的功能。总结就一句话,它是一个数据库连接池,很牛X。
相关配置详解
下面给出的是官方的一些配置详解
配置
缺省值
说明
name
配置这个属性的意义在于,如果存在多个数据源,监控的时候 可以通过名字来区分开来。如果没有配置,将会生成一个名字, 格式是:"DataSource-" + System.identityHashCode(th
jdbcUrl
连接数据库的url,不同数据库不一样。
例如:
mysql : jdbc:mysql://10.20.153.104:3306/druid2 oracle :jdbcracle:thin10.20.149.85:1521cnauto
username
连接数据库的用户名
password
连接数据库的密码。如果你不希望密码直接写在配置文件中, 可以使用ConfigFilter。详细看这里:
https://github.com/alibaba/druid/wiki/%E4%BD%BF%
driverClassName
根据url自动识别
这一项可配可不配,如果不配置druid会根据url自动识别dbType,然后选择相应的driverClassName
initialSize
0
初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时。
maxActive
8
最大连接池数量
maxIdle
8
已经不再使用,配置了也没效果。
minIdle
最小连接池数量
maxWait
获取连接时最大等待时间,单位毫秒。配置了maxWait之后, 缺省启用公平锁,并发效率会有所下降, 如果需要可以通过配置useUnfairLock属性为true使用非公。
poolPreparedStatements
false
是否缓存preparedStatement,也就是PSCache。
PSCache对支持游标的数据库性能提升巨大,比如说oracle。
在mysql5.5以下的版本中没有PSCache功能,建议关闭掉。作者在5.5版本中使用PSCache,通过监控界面发现PSCache有缓存命中率记录, 该应该是支持PSCache。
maxOpenPreparedStatements
-1
要启用PSCache,必须配置大于0,当大于0时,
poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题, 可以把这个数值配置大一些,比如说100
validationQuery
用来检测连接是否有效的sql,要求是一个查询语句。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会其作用。
testOnBorrow
true
申请连接时执行validationQuery检测连接是否有效,做了这
testOnReturn
false
归还连接时执行validationQuery检测连接是否有效,做了这
testWhileIdle
false
建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于
timeBetweenEvictionRunsMillis, 执行validationQuery检测连接是否有效。
timeBetweenEvictionRunsMillis
有两个含义:
1.Destroy线程会检测连接的间隔时间
2.testWhileIdle的判断依据,详细看testWhileIdle属性的说明。
numTestsPerEvictionRun
不再使用,一个DruidDataSource只支持一个EvictionRun
minEvictableIdleTimeMillis
connectionInitSqls
物理连接初始化的时候执行的sql。
exceptionSorter
根据dbType自动识别
当数据库抛出一些不可恢复的异常时,抛弃连接。
filters
属性类型是字符串,通过别名的方式配置扩展插件, 常用的插件有: 监控统计用的filter:stat 日志用的filter:log4j
防御sql注入的filter:wall。
proxyFilters
类型是List<com.alibaba.druid.filter.Filter>, 如果同时配置了filters和proxyFilters,
是组合关系,并非替换关系。
配置部署
1.导入druid相关jar包,并build path:
2.创建XML文件,配置druid部分解释如下:
3.配置web.xml文件
完成以上步骤基本可以访问druid了。
界面浏览:
访问如下链接:
[url=]http://ip:端口/项目名/druid/index.html[/url]
结论
配置很简单,刚开始研究这玩意,下一步再研究一下具体监控SQL功能,有错误之处还请老司机指出来。
戳阅读原文,跟作者进行深度交流吧~
以上是关于SQL注入监控神器—Druid的主要内容,如果未能解决你的问题,请参考以下文章