Mycat防火墙配置:IP白名单和 SQL黑名单说明

server.xml文件
       firewall标签用来定义防火墙;firewall下whitehost标签用来定义 IP白名单 ,blacklist用来定义 SQL黑名单。python

<firewall>
    <whitehost>
        <host user="mycat" host="127.0.0.1"></host> #ip 白名单 用户对应的能够访问的 ip 地址
    </whitehost>
    <blacklist check="true">
        <property name="selelctAllow">false</property> #黑名单容许的 权限 后面为默认
    </blacklist>
</firewall>

黑名单拦截明细配置mysql

配置项 缺省值 描述
selelctAllow true 是否容许执行 SELECT 语句
selectAllColumnAllow true 是否容许执行 SELECT * FROM T 这样的语句。若是设置为 false,不容许执行 select * from t,但能够select * from (select id, name from t) a。这个选项是防护程序经过调用 select * 得到数据表的结构信息。
selectIntoAllow true SELECT 查询中是否容许 INTO 字句
deleteAllow true 是否容许执行 DELETE 语句
updateAllow true 是否容许执行 UPDATE 语句
insertAllow true 是否容许执行 INSERT 语句
replaceAllow true 是否容许执行 REPLACE 语句
mergeAllow true 是否容许执行 MERGE 语句,这个只在 Oracle 中有用
callAllow true 是否容许经过 jdbc 的 call 语法调用存储过程
setAllow true 是否容许使用 SET 语法
truncateAllow true truncate 语句是危险,缺省打开,若须要自行关闭
createTableAllow true 是否容许建立表
alterTableAllow true 是否容许执行 Alter Table 语句
dropTableAllow true 是否容许修改表
commentAllow false 是否容许语句中存在注释,Oracle 的用户不用担忧,Wall 可以识别 hints和注释的区别
noneBaseStatementAllow false 是否容许非以上基本语句的其余语句,缺省关闭,经过这个选项就可以屏蔽 DDL。
multiStatementAllow false 是否容许一次执行多条语句,缺省关闭
useAllow true 是否容许执行 mysql 的 use 语句,缺省打开
describeAllow true 是否容许执行 mysql 的 describe 语句,缺省打开
showAllow true 是否容许执行 mysql 的 show 语句,缺省打开
commitAllow true 是否容许执行 commit 操做
rollbackAllow true 是否容许执行 roll back 操做
##若是把 selectIntoAllow、deleteAllow、updateAllow、insertAllow、mergeAllow 都设置为 false,这就是一个只读数据源了。##
拦截配置-永真条件
selectWhereAlwayTrueCheck true 检查 SELECT 语句的 WHERE 子句是不是一个永真条件
selectHavingAlwayTrueCheck true 检查 SELECT 语句的 HAVING 子句是不是一个永真条件
deleteWhereAlwayTrueCheck true 检查 DELETE 语句的 WHERE 子句是不是一个永真条件
deleteWhereNoneCheck false 检查 DELETE 语句是否无 where 条件,这是有风险的,但不是 SQL 注入类型的风险
updateWhereAlayTrueCheck true 检查 UPDATE 语句的 WHERE 子句是不是一个永真条件
updateWhereNoneCheck false 检查 UPDATE 语句是否无 where 条件,这是有风险的,但不是SQL 注入类型的风险
conditionAndAlwayTrueAllow false 检查查询条件(WHERE/HAVING 子句)中是否包含 AND 永真条件
conditionAndAlwayFalseAllow false 检查查询条件(WHERE/HAVING 子句)中是否包含 AND 永假条件
conditionLikeTrueAllow true 检查查询条件(WHERE/HAVING 子句)中是否包含 LIKE 永真条件
其余拦截配置
selectIntoOutfileAllow false SELECT ... INTO OUTFILE 是否容许,这个是 mysql 注入攻击的常见手段,缺省是禁止的
selectUnionCheck true 检测 SELECT UNION
selectMinusCheck true 检测 SELECT MINUS
selectExceptCheck true 检测 SELECT EXCEPT
selectIntersectCheck true 检测 SELECT INTERSECT
mustParameterized false 是否必须参数化,若是为 True,则不容许相似 WHERE ID = 1 这种不参数化的 SQL
strictSyntaxCheck true 是否进行严格的语法检测,Druid SQL Parser 在某些场景不能覆盖全部的SQL 语法,出现解析 SQL 出错,能够临时把这个选项设置为 false,同时把 SQL 反馈给 Druid 的开发者。
conditionOpXorAllow false 查询条件中是否容许有 XOR 条件。XOR 不经常使用,很难判断永真或者永假,缺省不容许。
conditionOpBitwseAllow true 查询条件中是否容许有"&"、"~"、"|"、"^"运算符。
conditionDoubleConstAllow false 查询条件中是否容许连续两个常量运算表达式
minusAllow true 是否容许 SELECT * FROM A MINUS SELECT * FROM B 这样的语句
intersectAllow true 是否容许 SELECT * FROM A INTERSECT SELECT * FROM B 这样的语句
constArithmeticAllow true 拦截常量运算的条件,好比说 WHERE FID = 3 - 1,其中"3 - 1"是常量运算表达式。
limitZeroAllow false 是否容许 limit 0 这样的语句
禁用对象检测配置
tableCheck true 检测是否使用了禁用的表
schemaCheck true 检测是否使用了禁用的 Schema
functionCheck true  检测是否使用了禁用的函数
objectCheck true 检测是否使用了“禁用对对象”
variantCheck true 检测是否使用了“禁用的变量”
readOnlyTables 指定的表只读,不可以在 SELECT INTO、DELETE、UPDATE、INSERT、MERGE 中做为"被修改表"出现
相关文章
相关标签/搜索