您必須在應用中整合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等對象會與非同步介面回應群組件產生衝突。
整合方式
阿里雲提供基於JavaScript的SDK,用於增強Web瀏覽器情境下的防護能力,並解決潛在的相容性問題,提供自動整合與手動整合兩種方式。
自動整合:一鍵開啟整合,無需修改業務代碼。
手動整合:ALB、MSE、APIG、FC、SAE接入的防護對象不支援自動注入WebSDK,需要選擇手動整合方式。
自動整合
在Web防护列表右上方,單擊WebSDK集成列表。為目標防護對象開啟自動注入WebSDK。
建立Web防護模板,並開啟了自動整合Web SDK,將會在HTTP報文的Header中植入
ssxmod_itna、ssxmod_itna2、ssxmod_itna3Cookie用於擷取用戶端瀏覽器指紋資訊。收集指紋資訊包括HTTP報文host欄位、瀏覽器高度和寬度等。啟用自動整合後,系統將自動在相應防護對象的HTML頁面中注入SDK,用於採集瀏覽器環境資訊、黑產工具探針資料及操作行為日誌(不含個人敏感資訊)。
手動整合
在Web防护列表右上方,單擊WebSDK集成列表,然後單擊擷取SDK連結。請將擷取到的<script>節點置於頁面上其他所有<script>節點之前以保證最先載入。