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