Mycat 系列之 Mycat 防火墙配置

Mycat 防火墙配置

ip 白名单和 SQL 黑名单说明(在 server.xml 中配置)

<firewall>
    <whitehost>
	    # IP 白名单(只允许 xx 用户登录的 IP)
        <host user="mycat" host="127.0.0.1"></host> 
    </whitehost>
    <blacklist check="true">
	    # 黑名单允许的权限(其它默认)
        <property name="selelctAllow">false</property>
    </blacklist>
</firewall>

·

SQL 黑名单拦截明细配置

配置项缺省值描述
selelctAllowTRUE是否允许执行 SELECT 语句。
deleteAllowTRUE是否允许执行 DELETE 语句。
updateAllowTRUE是否允许执行 UPDATE 语句。
insertAllowTRUE是否允许执行 INSERT 语句。
selectAllColumnAllowTRUE是否允许执行 SELECT * FROM T 这样的语句。这个选项是防御程序通过调用 select * 获得数据表的结构信息。
selectIntoAllowTRUESELECT 查询中是否允许 INTO 字句。
setAllowTRUE是否允许使用 SET 语法。
replaceAllowTRUE是否允许执行 REPLACE 语句。
mergeAllowTRUE是否允许执行 MERGE 语句。(只在 Oracle 中有用)
createTableAllowTRUE是否允许创建表。
alterTableAllowTRUE是否允许执行 ALTER TABLE 语句。
dropTableAllowTRUE是否允许修改表。
useAllowTRUE是否允许执行 mysql 的 USE 语句。
describeAllowTRUE是否允许执行 mysql 的 DESCRIBE 语句。
showAllowTRUE是否允许执行 mysql 的 SHOW 语句。
commitAllowTRUE是否允许执行 COMMIT 操作。
rollbackAllowTRUE是否允许执行 ROLL BACK 操作。
callAllowTRUE是否允许通过 jdbc 的 call 语法调用存储过程。
truncateAllowTRUEtruncate 语句是危险,若需要自行关闭。
commentAllowFALSE是否允许语句中存在注释,Oracle 的用户不用担心,Wall 能够识别 hints 和注释的区别。
noneBaseStatementAllowFALSE是否允许非以上基本语句的其他语句。通过这个选项就能够屏蔽 DDL。
multiStatementAllowFALSE是否允许一次执行多条语句。

·

拦截配置-永真条件

配置项缺省值描述
selectWhereAlwayTrueCheckTRUE检查 SELECT 语句的 WHERE 子句是否是一个永真条件。
selectHavingAlwayTrueCheckTRUE检查 SELECT 语句的 HAVING 子句是否是一个永真条件。
deleteWhereAlwayTrueCheckTRUE检查 DELETE 语句的 WHERE 子句是否是一个永真条件。
deleteWhereNoneCheckFALSE检查 DELETE 语句是否无 WHERE 条件。这是有风险的,但不是 SQL 注入类型的风险。
updateWhereAlayTrueCheckTRUE检查 UPDATE 语句的 WHERE 子句是否是一个永真条件。
updateWhereNoneCheckFALSE检查 UPDATE 语句是否无 WHERE 条件。这是有风险的,但不是SQL 注入类型的风险。
conditionAndAlwayTrueAllowFALSE检查查询条件(WHERE/HAVING 子句)中是否包含 AND 永真条件。
conditionAndAlwayFalseAllowFALSE检查查询条件(WHERE/HAVING 子句)中是否包含 AND 永假条件。
conditionLikeTrueAllowTRUE检查查询条件(WHERE/HAVING 子句)中是否包含 LIKE 永真条件。

·

其他拦截配置

配置项缺省值描述
selectIntoOutfileAllowFALSESELECT … INTO OUTFILE 是否允许。这个是 mysql 注入攻击的常见手段。
selectUnionCheckTRUE检测 SELECT UNION。
selectMinusCheckTRUE检测 SELECT MINUS。
selectExceptCheckTRUE检测 SELECT EXCEPT。
selectIntersectCheckTRUE检测 SELECT INTERSECT。
mustParameterizedFALSE是否必须参数化。如果为
strictSyntaxCheckTRUE是否进行严格的语法检测,Druid SQL Parser 在某些场景不能覆盖所有的 SQL 语法,出现解析 SQL 出错,可以临时把这个选项设置为
conditionOpXorAllowFALSE查询条件中是否允许有 XOR 条件。XOR 不常用,很难判断永真或者永假,缺省不允许。
conditionOpBitwseAllowTRUE查询条件中是否允许有"&"、"~"、"
conditionDoubleConstAllowFALSE查询条件中是否允许连续两个常量运算表达式。
minusAllowTRUE是否允许 SELECT * FROM A MINUS SELECT * FROM B 这样的语句。
intersectAllowTRUE是否允许 SELECT * FROM A INTERSECT SELECT * FROM B 这样的语句 。
constArithmeticAllowTRUE拦截常量运算的条件,比如说 WHERE FID = 3 - 1,其中"3 - 1"是常量运算表达式。
limitZeroAllowFALSE是否允许 limit 0 这样的语句。

禁用对象检测配置

配置项缺省值描述
tableCheckTRUE检测是否使用了禁用的表。
schemaCheckTRUE检测是否使用了禁用的 Schema。
functionCheckTRUE检测是否使用了禁用的函数。
objectCheckTRUE检测是否使用了“禁用对对象”。
variantCheckTRUE检测是否使用了“禁用的变量”。
readOnly\指定的表只读,不能够在 SELECT INTO、DELETE、UPDATE、INSERT、MERGE 中作为"被修改表"出现。

·

示例:只允许 xx IP 的主机登陆,并且不允许执行 SELECT *操作

<firewall>
    <whitehost>
        <host host="自己指定 IP" user="test"></host>
    </whitehost>
    <blacklist check="true">
        <property name="selectAllColumnAllow">false</property>
    </blacklist>
</firewall>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值