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

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

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

 #ip 白名单 用户对应的可以访问的 ip 地址false #黑名单允许的 权限 后面为默认

黑名单拦截明细配置

配置项缺省值描述
selelctAllowtrue是否允许执行 SELECT 语句
selectAllColumnAllowtrue是否允许执行 SELECT * FROM T 这样的语句。如果设置为 false,不允许执行 select * from t,但可以select * from (select id, name from t) a。这个选项是防御程序通过调用 select * 获得数据表的结构信息。
selectIntoAllowtrueSELECT 查询中是否允许 INTO 字句
deleteAllowtrue是否允许执行 DELETE 语句
updateAllowtrue是否允许执行 UPDATE 语句
insertAllowtrue是否允许执行 INSERT 语句
replaceAllowtrue是否允许执行 REPLACE 语句
mergeAllowtrue是否允许执行 MERGE 语句,这个只在 Oracle 中有用
callAllowtrue是否允许通过 jdbc 的 call 语法调用存储过程
setAllowtrue是否允许使用 SET 语法
truncateAllowtruetruncate 语句是危险,缺省打开,若需要自行关闭
createTableAllowtrue是否允许创建表
alterTableAllowtrue是否允许执行 Alter Table 语句
dropTableAllowtrue是否允许修改表
commentAllowfalse是否允许语句中存在注释,Oracle 的用户不用担心,Wall 能够识别 hints和注释的区别
noneBaseStatementAllowfalse是否允许非以上基本语句的其他语句,缺省关闭,通过这个选项就能够屏蔽 DDL。
multiStatementAllowfalse是否允许一次执行多条语句,缺省关闭
useAllowtrue是否允许执行 mysql 的 use 语句,缺省打开
describeAllowtrue是否允许执行 mysql 的 describe 语句,缺省打开
showAllowtrue是否允许执行 mysql 的 show 语句,缺省打开
commitAllowtrue是否允许执行 commit 操作
rollbackAllowtrue是否允许执行 roll back 操作
##如果把 selectIntoAllow、deleteAllow、updateAllow、insertAllow、mergeAllow 都设置为 false,这就是一个只读数据源了。##
拦截配置-永真条件
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是否必须参数化,如果为 True,则不允许类似 WHERE ID = 1 这种不参数化的 SQL
strictSyntaxChecktrue是否进行严格的语法检测,Druid SQL Parser 在某些场景不能覆盖所有的SQL 语法,出现解析 SQL 出错,可以临时把这个选项设置为 false,同时把 SQL 反馈给 Druid 的开发者。
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检测是否使用了“禁用的变量”
readOnlyTables指定的表只读,不能够在 SELECT INTO、DELETE、UPDATE、INSERT、MERGE 中作为"被修改表"出现

 

转载于:https://my.oschina.net/u/3420885/blog/1942388


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部