Druid配置wallfilter

更新时间:2023-07-11 20:26:30 阅读: 评论:0

Druid配置wallfilter
这个⽂档提供基于Spring的各种配置⽅式
使⽤缺省配置的WallFilter
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="clo">
...
<property name="filters" value="wall"/>
</bean>
结合其他Filter⼀起使⽤
WallFilter可以结合其他Filter⼀起使⽤,例如:
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="clo">
...
<property name="filters" value="wall,stat"/>
</bean>
这样,拦截检测的时间不在StatFilter统计的SQL执⾏时间内。
如果希望StatFilter统计的SQL执⾏时间内,则使⽤如下配置
密苏里大学哥伦比亚分校
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="clo">
...
google english<property name="filters" value="stat,wall"/>
</bean>
指定dbType
有时候,⼀些应⽤框架做了⾃⼰的JDBC Proxy Driver,是的DruidDataSource⽆法正确识别数据库的类型,则需要特别指定,如下:  <bean id="wall-filter" class="com.alibaba.druid.wall.WallFilter">
<property name="dbType" value="mysql" />
</bean>
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="clo">
...
<property name="proxyFilters">
<list>
<ref bean="wall-filter"/>
</list>
</property>
</bean>
cock是什么意思
指定配置装载的⽬录
缺省情况下,配置装载的⽬录如下:
数据库类型⽬录
mysql META-INF/druid/wall/mysql
oracle META-INF/druid/wall/oracle
sqlrver META-INF/druid/wall/sqlrver
postgres META-INF/druid/wall/postgres
从配置⽬录中以下⽂件中读取配置:
<
<
托福junior<
<
<
指定配置装载的⽬录是可以指定,例如:
<bean id="wall-filter-config" class="com.alibaba.druid.wall.WallConfig" init-method="init">
<!-- 指定配置装载的⽬录  -->
<property name="dir" value="META-INF/druid/wall/mysql" />
</bean>
<bean id="wall-filter" class="com.alibaba.druid.wall.WallFilter">
<property name="dbType" value="mysql" />
<property name="config" ref="wall-filter-config" />
2013高考数学试卷及答案</bean>
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="clo">      ...
<property name="proxyFilters">
<list>
<ref bean="wall-filter"/>
</list>
</property>
</bean>
WallConfig详细说明
本⾝的配置
配置项缺省值
dir 按照dbType分别配置:
mysql : META-INF/druid/wall/mysql oracle : META-INF/druid/wall/oracle sqlrver : META-INF/druid/wall/sqlrver
拦截配置-语句
配置项缺省
描述
lelctAllow true是否允许执⾏SELECT语句
lectAllColumnAllow true是否允许执⾏SELECT * FROM T这样的语句。如果设置为fal,不允许执⾏lect * from t,但lect * from (lect id, name from t) a。这个选项是防御程序通过调⽤lect *获得数据表的结构信息。
lectIntoAllow true SELECT查询中是否允许INTO字句
deleteAllow true是否允许执⾏DELETE语句
updateAllow true是否允许执⾏UPDATE语句
inrtAllow true是否允许执⾏INSERT语句superclass
replaceAllow true是否允许执⾏REPLACE语句
mergeAllow true是否允许执⾏MERGE语句,这个只在Oracle中有⽤
callAllow true是否允许通过jdbc的call语法调⽤存储过程
tAllow true是否允许使⽤SET语法
truncateAllow true truncate语句是危险,缺省打开,若需要⾃⾏关闭
createTableAllow true是否允许创建表
gg是什么意思
alterTableAllow true是否允许执⾏Alter Table语句
dropTableAllow true是否允许修改表
commentAllow fal是否允许语句中存在注释,Oracle的⽤户不⽤担⼼,Wall能够识别hints和注释的区别
noneBaStatementAllow fal是否允许⾮以上基本语句的其他语句,缺省关闭,通过这个选项就能够屏蔽DDL。
multiStatementAllow fal是否允许⼀次执⾏多条语句,缺省关闭
uAllow true是否允许执⾏mysql的u语句,缺省打开
describeAllow true是否允许执⾏mysql的describe语句,缺省打开
showAllow true是否允许执⾏mysql的show语句,缺省打开
commitAllow true是否允许执⾏commit操作
rollbackAllow true是否允许执⾏roll back操作
如果把lectIntoAllow、deleteAllow、updateAllow、inrtAllow、mergeAllow都设置为fal,这就是⼀个只读数据源了。
拦截配置-永真条件
配置项缺省值描述
lectWhereAlwayTrueCheck true检查SELECT语句的WHERE⼦句是否是⼀个永真条件
lectHavingAlwayTrueCheck true检查SELECT语句的HAVING⼦句是否是⼀个永真条件
be cool
deleteWhereAlwayTrueCheck true检查DELETE语句的WHERE⼦句是否是⼀个永真条件
deleteWhereNoneCheck fal检查DELETE语句是否⽆where条件,这是有风险的,但不是SQL注⼊类型的风险
updateWhereAlayTrueCheck true检查UPDATE语句的WHERE⼦句是否是⼀个永真条件updateWhereNoneCheck fal检查UPDATE语句是否⽆where条件,这是有风险的,但不是SQL注⼊类型的风险
conditionAndAlwayTrueAllow fal检查查询条件(WHERE/HAVING⼦句)中是否包含AND永真条件
conditionAndAlwayFalAllow fal检查查询条件(WHERE/HAVING⼦句)中是否包含AND永假条件
conditionLikeTrueAllow true检查查询条件(WHERE/HAVING⼦句)中是否包含LIKE永真条件
其他拦截配置
配置项缺省
描述
lectIntoOutfileAllow fal SELECT ... INTO OUTFILE 是否允许,这个是mysql注⼊攻击的常见⼿段,缺省是禁⽌的lectUnionCheck true检测SELECT UNION
lectMinusCheck true检测SELECT MINUS
lectExceptCheck true检测SELECT EXCEPT
lectInterctCheck true检测SELECT INTERSECT
mustParameterized fal是否必须参数化,如果为True,则不允许类似WHERE ID = 1这种不参数化的SQL strictSyntaxCheck true是否进⾏严格的语法检测,Druid SQL Parr在某些场景不能覆盖所有
的SQL语法,出现解析SQL出
错,可以临时把这个选项设置为fal,同时把SQL反馈给Druid的开发者。conditionOpXorAllow fal查询条件中是否允许有XOR条件。XOR不常⽤,很难判断永真或者永假,缺省不允许。conditionOpBitwAllow true查询条件中是否允许有"&"、"~"、"|"、"^"运算符。
conditionDoubleConstAllow fal查询条件中是否允许连续两个常量运算表达式
minusAllow true是否允许SELECT * FROM A MINUS SELECT * FROM B这样的语句
情人节快乐的英文interctAllow true是否允许SELECT * FROM A INTERSECT SELECT * FROM B这样的语句constArithmeticAllow true拦截常量运算的条件,⽐如说WHERE FID = 3 - 1,其中"3 - 1"是常量运算表达式。limitZeroAllow fal是否允许limit 0这样的语句
禁⽤对象检测配置
配置项缺省值描述
tableCheck true检测是否使⽤了禁⽤的表
schemaCheck true检测是否使⽤了禁⽤的Schema
functionCheck true检测是否使⽤了禁⽤的函数
objectCheck true检测是否使⽤了“禁⽤对对象”
variantCheck true检测是否使⽤了“禁⽤的变量”
readOnlyTables空指定的表只读,不能够在SELECT INTO、DELETE、UPDATE、INSERT、MERGE中作为"被修改表"出现< Jdbc相关配置
配置项缺省
描述
metadataAllow true是否允许调⽤Metadata⽅法,这个⽅法调⽤会暴露数据库的表信息
wrapAllow true是否允许调⽤Connection/Statement/ResultSet的isWrapFor和unwrap⽅法,这两个⽅法调⽤,使得有办法拿到原⽣驱动的对象,绕过WallFilter的检测直接执⾏SQL。
WallFiler配置说明
配置项缺省值描述
logViolation fal对被认为是攻击的SQL进⾏输出
北京化妆学校throwException true对被认为是攻击的SQL抛出SQLExcepton
config
provider
刚开始引⼊WallFilter的时候,把logViolation设置为true,⽽throwException设置为fal。就可以观察是否存在违规的情况,同时不影响业务运⾏。

本文发布于:2023-07-11 20:26:30,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/174432.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:是否   允许   语句   配置
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图