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 中做爲"被修改表"出現
相關文章
相關標籤/搜索