Soul的匹配策略和waf執行流程
soul的匹配策略
通過前面幾節的分析我們可以看到,幾乎所有的插件都有匹配的規則執行的順序,而我們通過插件分析了解到,具體的規則匹配是在soul-plugin-base中實作的
在AbstractSoulPlugin檔案中我們可以看到,具體的篩選規則的要求被封裝在了MatchStrategyUtils.match方法中,通過規則要求條件數量來獲取到匹配的規則

在具體操作時,我們可以看到匹配規則,由Soul內部的SPI自己實作了規則的加載

最后我們可以看到AndMatchStrategy和OrMatchStrategy具體實作了規則的匹配

最后通過策略模式和具體的模式操作相關的代碼實作了匹配的策略


例如Match條件的匹配

waf的執行流程
首先在設定界面可以設定兩種不同的模式
‘
- 當 model 設定為 black 模式的時候,只有匹配的流量才會執行拒絕策略,不匹配的,直接會跳過,
- 當 model 設定為 mixed 模式的時候,所有的流量都會通過 waf插件,針對不同的匹配流量,用戶可以設定是拒絕,還是通過,
另外從waf的配置界面可以看到waf的配置非常簡單,即是就是對上述匹配規則對應的請求到底是拒絕還是通過,這個還是很好理解的

另外可以看到,waf中同時設定了請求的回應碼和我們自定義的回應碼,

這樣,可以清晰明了的對外部的請求做攔截或通過處理,用來實作對流量實作防火墻的核心功能:攔截非法請求、例外請求、拒絕策略,
從如上可以看到soul的流量攔截(防火墻)的實作很簡單清晰明了,而且綜合運用了SPI和策略模式等,
歡迎搜索關注本人與朋友共同開發的微信面經小程式【大廠面試助手】和公眾號【微瞰技術】,以及總結的分類面試題https://github.com/zhendiao/JavaInterview


轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/257018.html
標籤:Java
上一篇:Java內部類與匿名內部類
下一篇:PHP匿名類的用法
