主动特征识别
概述
除了对收到的客户端请求进行分析,识别头部和客户端 IP 中的特征,EdgeOne 也提供了主动特征识别的 Bot 识别方式。主动特征识别可以对客户端进行 Cookie 校验和会话跟踪,以及客户端行为校验来进行交互,进一步通过客户端的交互反馈来识别当前访问者是否为工具。主动特征识别具有以下优势:
对于能够模拟浏览器行为的工具(如:Headless Chrome 等)具有较强的识别效果。
相比其它前端校验方式(如:CAPTCHA 人机校验),主动特征识别的集成的方式对业务侵入性较小,用户几乎不会感知,可以为您带来更好的 Bot 识别效果和集成体验。
如果您当前站点服务中提供了登录/注册/支付服务,并且具有较高业务价值(例如:获取账号后可以获得账号内价值、通过支付可以获得稀缺商品或服务等),建议您针对关键业务接口启用主动特征识别。
说明:
1. 由于主动特征识别的机制特点,在开启前,请确认您的业务为 Web 浏览器客户端,或通过匹配条件将主动特征识别规则限制在仅允许 Web 浏览器访问的资源,避免因兼容性问题影响移动端 App 访问。
2. 该功能当前仍在内测中,如需开启请联系我们。
支持的能力
主动特征识别支持如下两种能力配置:
Cookie 校验和会话跟踪:通过 HTTP 会话状态( Cookie 机制)为每一个访客下发动态会话令牌,并要求访客请求必须携带合法会话令牌。从而跟踪并区分来自不同访客的请求并识别其行为特征。除了验证请求中的 Cookie 的合法性之外,Cookie 校验也会识别被篡改的会话信息以及高频采集 Cookie 信息的行为,降低劫持会话造成的安全风险。
客户端行为校验:高级自动化工具(如:Headless Chrome)已经可以模拟浏览器行为。客户端行为校验将通过在 HTML 响应页面中注入 JavaScript 代码,采集客户端的 JavaScript 运行环境、设备环境和客户端交互行为,从而识别工具环境和正常请求的访客。
客户端交互流程
场景一:拦截普通 Web 工具爬虫对媒体站点的访问
示例场景
媒体站点
media.example.com
仅允许 H5 客户端和浏览器获取站点内容,且合法客户端均支持 Cookie
。因此需要拦截不支持 Cookie
的客户端,包括劫持了其他访客会话的爬虫。对于恶意篡改 Cookie
的客户端使用静默方式进行对抗,保持连接但不再响应请求。操作步骤
1. 登录 边缘安全加速平台 EO 控制台,在左侧菜单栏中,单击站点列表,在站点列表内单击需配置的站点。
2. 单击安全防护 > Web 防护。默认为站点级防护策略,单击域名级防护策略 Tab,在域名级防护策略中,单击目标域名进入目标域名防护策略配置界面,例如:
media.example.com
。3. 定位到 Bot 管理卡片,单击主动特征识别下方的添加规则,进入配置页面。
4. 配置判断条件及执行处置。以当前场景为例,可配置匹配字段为请求路径(Path)正则匹配
/*
,且请求方式(Method)等于GET
的请求。配置执行处置操作为 Cookie 校验和会话跟踪,校验方式为更新 Cookie 并校验:对于未携带 Cookie 或 Cookie 已过期的请求,配置触发阈值为 10 秒内 300 次,执行处置为拦截;
对于携带不合法 Cookie 的请求,执行处置为静默。
配置项 | 说明 |
校验方式 | 更新 Cookie 并校验:对于未携带合法会话信息或者会话信息过期的请求,EdgeOne 将在响应中携带 Set-Cookie 头部创建会话,并持续更新会话信息。建议使用 GET 方式访问的路径选用此校验方式。 仅校验:EdgeOne 仅校验请求中携带的会话信息是否合法。当请求中的会话信息过期或请求未携带合法会话信息时,不会通过更新 Cookie 创建新的会话。建议使用 POST 方式访问的接口(如:注册、登录、加购等)使用仅校验方式。 |
校验结果 | 未通过 Cookie 校验的请求,根据校验结果,可按照如下方式处理: 未携带 Cookie 或 Cookie 已过期:Cookie 头部中携带的会话信息具有时效性,仅在一段时间内有效。若请求中未携带合法会话信息,或者会话信息过期时,需要更新会话信息才能通过 Cookie 校验。当客户端高频使用未携带会话信息的请求访问时,可能存在收割 Cookie 并劫持会话的风险。您可以选择未携带会话信息的请求到达指定速率时,处置来自该请求来源(客户端 IP),且未携带合法会话信息的请求。 触发阈值:您可以配置一段时间内允许的未携带 Cookie 或 Cookie 已过期可创建的会话数量上限,限制新会话的发起速率。当超过触发阈值时,将按照配置的处置方式处理。 不合法 Cookie:EdgeOne 下发的会话信息具备加密校验能力,随意篡改会话信息往往意味着恶意请求。您可以选项处置会话信息被篡改的请求。 |
会话速率和周期特征校验 | 通过 Cookie 校验的请求,根据预设速率特征,分为高风险、中风险和低风险三类。您可以为每个风险等级配置不同的处置方式,以便更有效地识别和防御恶意行为: 高风险:单个会话(对应 Cookie 头部中,相同的 EO-Bot-SessionId 值)中,每 5 分钟统计窗口超过 1000 个请求。当开启客户端行为校验后,同时校验同一客户端校验票据(对应 Cookie 头部中,相同的 EO-Bot-Token 值)在 1 分钟内重复使用超过 200 次。 中风险:单个会话(对应 Cookie 头部中,相同的 EO-Bot-SessionId 值)中,每 5 分钟统计窗口超过 500 个请求。当开启客户端行为校验后,同时校验同一客户端校验票据(对应 Cookie 头部中,相同的 EO-Bot-Token 值)在 1 分钟内重复使用超过 100 次。 低风险:单个会话(对应 Cookie 头部中,相同的 EO-Bot-SessionId 值)中,每 5 分钟统计窗口超过 100 个请求。当开启客户端行为校验后,同时校验同一客户端校验票据(对应 Cookie 头部中,相同的 EO-Bot-Token 值)在 1 分钟内重复使用超过 20 次。 |
5. 单击保存并发布后,规则将部署生效。
场景二:使用客户端行为校验加固电商站点密码重置页面和 API ,对抗批量重置密码的账号接管(ATO,Account Take Over)攻击
示例场景
电商站点
shop.example.com
的密码重置接口 /api/password_reset
发现有大量失败的重置请求,来自大量 IP ,频率不高,且无明显 User-Agent
或者头部聚集性。因此使用主动特征识别功能,对密码重置接口 /api/password_reset
和密码重置页面 /account/forgot_password.html
加固 Bot 对抗策略,使用静默方式对抗自动化批量尝试重置密码工具。操作步骤
1. 登录 边缘安全加速平台 EO 控制台,在左侧菜单栏中,单击站点列表,在站点列表内单击需配置的站点。
2. 单击安全防护 > Web 防护。默认为站点级防护策略,单击域名级防护策略 Tab,在域名级防护策略中,单击目标域名进入目标域名防护策略配置界面,例如:
shop.example.com
。3. 定位到 Bot 管理卡片,单击主动特征识别下方的添加规则,进入配置页面。
4. 配置判断条件及执行处置。以当前场景为例,可配置匹配字段为请求路径(Path)等于
/account/forgot_password.html
。配置执行处置操作为客户端行为校验,工作量证明校验强度为高,执行方式为延迟 100ms 执行:对于客户端未启用 JS(未完成检测)在 10 秒内超过 10 次的请求,执行处置为(长时间)等待后响应;
对于客户端检测超时的请求,执行处置为静默;
对于 Bot 客户端,执行处置为静默。
说明:
客户端行为校验仅会在响应的
Content-Type
为text/html
时注入 JavaScript 进行校验,其余请求会根据当前校验结果进行处置。
配置项 | 说明 |
工作量证明校验 | 客户端行为校验支持工作量证明校验的强度调整。通过调整强度,可以平衡客户端的计算负载和对 Bot 的识别效果。 |
执行方式 | 用于探测的 JavaScript 代码会在整个页面加载完成后运行,同时支持延迟一定时间执行 JavaScript 探测代码。这有助于避免影响正常页面渲染,确保浏览器先加载完成页面再进行校验,从而避免影响用户访问体验。 |
校验结果 | 客户端未启用 JS(未完成检测):对于不支持 JavaScript 的客户端,或者校验未完成时发起的请求,归入此类。由于 JavaScript 校验通常需要一定时间进行,客户端在完成校验前,您可以允许一定速率的请求通过,并处置未通过校验且高频发起请求的客户端。 客户端检测超时:客户端支持 JavaScript 并已经开始校验,但是未能在 60 秒内完成校验。60 秒对于正常浏览器客户端而已足够完成客户端行为校验,而来自算力较少的 IoT 代理,则有较大概率验证超时,使用该选项可以区分处置算力较低的分布式 Bot 网络请求。 Bot 客户端:客户端成功完成了 JavaScript 校验,探测模块发现客户端运行环境异常,非正常人类通过浏览器访问。 |
5. 单击保存并发布后,规则将部署生效。