簡述:
JAVAWaf采用Java預言編寫,主要針對Web應用,以filter的形式存在,配置靈活,實際根據需求進行相關設置。
web.xml:
<filter> <filter-name>websecfilter</filter-name> <filter-class>com.hs.security.web.filter.WatchDog</filter-class> <init-param> <param-name>config</param-name> <param-value>/javawaf.xml</param-value> </init-param> </filter> <filter-mApping> <filter-name>websecfilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
注:javawaf.xml和web.xml為平行目錄
javawaf.xml:
- 1最簡配置:
<? xml version="1.0" encoding="UTF-8" ?> <javawaf> <logger> 作者:jkgh006 日期:2016/08/22 新增:添加三條輸入攔截規則,分別為XSS,SQLinjection,SSRF,添加三條輸出攔截規則,SQLinjection,malware,URLRedirection 刪除: 更新: </logger> <encoding>UTF-8</encoding> <intercept> <input-intercept>true</input-intercept> <output-intercept>true</output-intercept> </intercept> </javawaf>
注:其中logger不需要關心,這個是編寫插件的更新日志,供調試用,intercept標簽是一個攔截開關,例如,input-intercept為true那么就會進行輸入攔截,對所有的post,get參數進行攔截。output-intercept為true,那么就會對輸出進行攔截,這里主要攔截的就是響應頁面的內容,兩個都為false的話,就是都不攔截
- 2特權配置(黑白名單)
<privilege> <input> <include></include> <exclude></exclude> </input> <output> <include></include> <exclude></exclude> </output> </privilege>
注:這里也是采用輸入輸出配置,默認情況下攔截檢測所有請求,include和exclude標簽的默認屬性就是path,表示以path的形式進行判斷是否要走攔截邏輯,這里還有其他屬性
url , path , query , domain , retcode
舉例:
<include type="domain"></include>
特權配置的原則:
a. 白名單優先
舉例說明:
<input> <include>/hello</include> //需要走攔截邏輯的 <exclude></exclude> //不需要走攔截邏輯的 </input>
如果配置了include 那么配置exclude 是自動失效,配置這條規則的意思就是說以uri的形式對象為/hellok開頭的就進入輸入攔截邏輯
b. 輸入配置全局生效,輸出配置局部生效
舉例說明:
<input> <include>/hello</include> //需要走攔截邏輯的 <exclude></exclude> //不需要走攔截邏輯的 </input> <output> <include></include> <exclude type="retcode">302</exclude> </output>
這樣配置的意思就是,以uri的形式對象為/hellok開頭的就進入輸入攔截邏輯,并且在返回的時候,響應碼為非302的請求進響應攔截
上面的也可以簡化為:
<input> <include>/hello</include> //需要走攔截邏輯的 </input> <output> <exclude type="retcode">302</exclude> </output>
- 3關鍵字配置
<keywords> <input-words>information_schema|extractvalue</input-words> <output-words></output-words> </keywords>
也分為輸入輸出攔截,輸入攔截的是參數,輸出攔截的是響應內容,優先級比較高
- 4全局攔截回調
<callback> <input-class> com.callback.test.GloubeCallBackTest </input-class> <output-class>com.callback.test.GloubeCallBackTest</output-class> </callback>
分為輸入攔截后回調,和輸出攔截后回調,這里主要是針對用戶自定義設置而來的
- 5規則詳細配置
<policys> <input> </input> <output> </output> </policys>
這里面分別為對輸入的攔截配置和對輸出的攔截配置,舉例子如下:
Input標簽內:
注:id為要調用規則的編號,這個是必須項,name為自定義的規則名稱,會覆蓋系統默認名稱
include%20和%20exclude%20分別為只針對這條策略的黑白名單;callback也是只針對這條策略的用戶自定義hook類,這里主要說一下custom-rules:
用戶自定義規則:
replace優先級別最高,如果設置了,就會完全取代系統的所有規則,append規則級別相對比較低,配置了之后默認加到要檢查的規則后面
output標簽內:
配置與input一樣
私信回復學習免費領取最新學習資料






