全部产品
Search
文档中心

Web 应用防火墙:Web应用集成SDK

更新时间:Mar 15, 2024

您必须在应用中集成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后,会作出响应。

异步接口响应组件为纯功能性组件,不涉及任何安全功能,不会进行任何数据采集或上报。

异步接口响应组件工作原理如下:

  1. 异步接口响应组件会全局重写页面上的xmlHttpRequest(xhr)、Fetch、Form等通用的API接口请求对象,在API接口请求对象上额外封装一层代码,不会影响原始对象的各种特性。

  2. Hook完毕后,异步接口响应组件会先于页面上的其他JS代码,判断请求的response是否为WAF返回客户端的挑战类处置手段(JS校验与captcha挑战)。

  3. 如果发现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="//g.alicdn.com/frontend-lib/frontend-lib/2.3.40/jquery_231213.min.js"></script>
      <script src="//g.alicdn.com/frontend-lib/frontend-lib/2.3.42/interfaceacting240113.js"></script>
      <script src="//aeu.alicdn.com/waf/antidomxss_v702.js"></script>
    • 如果不需要开启动态令牌挑战,请将如下<script>节点置于页面上所有其他<script>节点之前以保证最先加载:

      <script src="//g.alicdn.com/frontend-lib/frontend-lib/2.3.42/interfaceacting240113.js"></script>
      <script src="//aeu.alicdn.com/waf/antidomxss_v702.js"></script>

本地化式部署

该部署方案仅用于某些特殊情况,如页面csp不允许从alicdn上加载资源,或因为某些原因需要将所有组件完全本地化到自身业务域名下。不推荐采用该方式部署。

若要本地化部署,您可在本地域名下新建两份JS资源,将CDN上JS中的代码内容全部拷贝到本地,然后采用类似“SDK接入式部署”的原则将本地化的JS资源加载到页面。