您必须在应用中集成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>节点之前以保证最先加载。