您必須在應用中集成SDK,才能配置網頁防爬場景化規則。本文介紹了如何為Web應用集成WAF防護SDK(以下簡稱SDK)。
組件
Web SDK集成包括Web采集器、異步接口響應組件。
Web采集器
Web采集器將客戶端瀏覽器或容器環境下的特征納入整體antibot攻防體系,進一步識別出多種網絡層特征無法覆蓋的攻擊手法,提升攻防效果。
Web采集器采集到的特征經過混淆加密后,在根域名下植入cookie,并通過請求上報,對性能影響較小。
Web采集器采集的內容主要分為三部分:
瀏覽器或容器環境信息:常見的如瀏覽器型號版本、屏幕分辨率、時區特性與時間戳等。
特定攻防探針:主要是針對一些常見的瀏覽器級別Bot腳本、driver、自動化容器的探針。
用戶操作行為:主要指用戶在頁面上的鼠標、鍵盤、觸屏事件。
說明出于隱私考慮,鍵盤只會采集擊鍵時間,不會采集具體按下了哪個鍵。
異步接口響應組件
異步接口響應組件使Web應用程序能在API接口上響應antibot攻防體系下發給客戶端的挑戰(目前包括JS校驗和Captcha挑戰)。采用此組件后,如果WAF給某一API接口下發挑戰response,異步接口響應組件探測到該挑戰response后,會作出響應。
異步接口響應組件為純功能性組件,不涉及任何安全功能,不會進行任何數據采集或上報。
異步接口響應組件工作原理如下:
異步接口響應組件會全局重寫頁面上的xmlHttpRequest(xhr)、Fetch、Form等通用的API接口請求對象,在API接口請求對象上額外封裝一層代碼,不會影響原始對象的各種特性。
Hook完畢后,異步接口響應組件會先于頁面上的其他JS代碼,判斷請求的response是否為WAF返回客戶端的挑戰類處置手段(JS校驗與captcha挑戰)。
如果發現response并非WAF返回(而是源站返回),異步接口響應組件不會執行任何響應,會把response處理權限向下透傳給網站本身的JS代碼。如果發現response是WAF返回的,異步接口響應組件會解析返回的response中的算法內容、執行WAF要求的JS運算、并在運算之后攜帶JS校驗驗證簽名重新發起請求。該重新發起的請求會被WAF驗簽放過,成功回源。
兼容性說明
環境兼容性:兼容IE8內核以上各類瀏覽器與客戶端容器。
兼容性依賴:客戶端請求可以正常攜帶cookie上報。容器或請求本身不支持cookie,則組件功能會被影響。
Hook兼容:對于一些特殊業務,異步API接口的請求本身采用的hook原生XHR、form、Fetch等對象會與異步接口響應組件產生沖突。
部署方式
自動集成
自動集成需要網站HTML頁面請求經由WAF。無需客戶網頁代碼改造即可部署完成,并且可以享受線上熱更新。
在配置網頁防爬場景化的防護場景定義時,選擇自動集成后,Bot管理在處理HTML頁面response時,會主動將HTML格式解開,并將Web采集器組件、異步接口處理組件插入到dom結構中,并返回給客戶端。更多信息,請參見配置防護場景定義。
對于已經壓縮的HTML頁面,目前注入式部署只支持content-encoding:gzip的壓縮方式,暫不支持br與deflate壓縮。
手工集成
適合于無法滿足自動集成的場景,包括HTML頁面流量沒有經過antibot攻防體系,或壓縮類型不支持等。需要滿足兩個原則:
所有需要依賴antibot攻防體系挑戰處置的API接口,所在的HTML頁面都必須接入此SDK。
獲取SDK鏈接。訪問BOT管理頁面,在場景化防護頁簽,單擊新建模板,在防護場景定義配置向導頁面,配置Web SDK集成時,選擇手動集成后單擊獲取SDK鏈接。請將如下<script>節點置于頁面上所有其他<script>節點之前以保證最先加載:
<script src="http://g.alicdn.com/frontend-lib/frontend-lib/2.3.66/jquery_240828.min.js"></script>
本地化式部署
該部署方案僅用于某些特殊情況,如頁面csp不允許從alicdn上加載資源,或因為某些原因需要將所有組件完全本地化到自身業務域名下。不推薦采用該方式部署。
若要本地化部署,您可以在本地域名下新建兩份JS資源,將CDN上JS中的代碼內容全部拷貝到本地,然后采用類似“SDK接入式部署”的原則將本地化的JS資源加載到頁面。