有奖捉虫:办公协同&微信生态&物联网文档专题 HOT

概述

除了对收到的客户端请求进行分析,识别头部和客户端 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 的访问

示例场景

媒体站点 media.example.com 仅允许 H5 客户端和浏览器获取站点内容,且合法客户端均支持 Cookie。因此需要拦截不支持 Cookie 的客户端,包括劫持了其他访客会话的爬虫。对于恶意篡改 Cookie 的客户端使用静默方式进行对抗,保持连接但不再响应请求。

操作步骤

1. 登录 边缘安全加速平台 EO 控制台,在左侧菜单栏中,单击站点列表,在站点列表内单击需配置的站点,进入站点详情页面。
2. 在站点详情页面,单击安全防护 > Bot 管理,进入 Bot 管理详情页面。
3. 在主动特征识别卡片中,单击设置,进入配置页面。
4. 单击添加规则,在选择匹配字段。以当前场景为例,可选择匹配字段为请求路径正则匹配 /*,且请求方式等于 GET。
5. 单击操作,添加一个操作;选择操作为 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 次。
以当前场景为例,您可以配置校验方式为更新 Cookie 并校验,配置当校验结果为未携带 Cookie 或 Cookie 已过期时,触发阈值为10秒内300次,则拦截请求;当有不合法 Cookie 请求时,静默处理。配置结果如下所示:

6. 单击保存并发布,即可完成配置。

场景二:使用客户端行为校验加固电商站点密码重置页面和 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. 在站点详情页面,单击安全防护 > Bot 管理,进入 Bot 管理详情页。
3. 在主动特征识别卡片中,单击设置,进入配置页面。
4. 单击添加规则,在选择匹配字段。以当前场景为例,可选择匹配字段为请求路径等于/account/forgot_password.html
5. 在规则配置页面内,单击操作,添加一个操作;选择操作为客户端行为校验,执行的处置方式可参考:处置方式。相关配置说明如下:
说明:
客户端行为校验仅会在响应的 Content-Type 为 text/html 时注入 JavaScript 进行校验,其它请求会根据当前校验结果进行处置。
配置项
说明
工作量证明校验
客户端行为校验支持工作量证明校验的强度调整。通过调整强度,可以平衡客户端的计算负载和对 Bot 的识别效果。
执行方式
用于探测的 JavaScript 代码会在整个页面加载完成后运行,同时支持延迟一定时间执行 JavaScript 探测代码。这有助于避免影响正常页面渲染,确保浏览器先加载完成页面再进行校验,从而避免影响用户访问体验。
校验结果
客户端未启用 JS(未完成检测):对于不支持 JavaScript 的客户端,或者校验未完成时发起的请求,归入此类。由于 JavaScript 校验通常需要一定时间进行,客户端在完成校验前,您可以允许一定速率的请求通过,并处置未通过校验且高频发起请求的客户端。
客户端检测超时:客户端支持 JavaScript 并已经开始校验,但是未能在 60 秒内完成校验。60 秒对于正常浏览器客户端而已足够完成客户端行为校验,而来自算力较少的 IoT 代理,则有较大概率验证超时,使用该选项可以区分处置算力较低的分布式 Bot 网络请求。
Bot 客户端:客户端成功完成了 JavaScript 校验,探测模块发现客户端运行环境异常,非正常人类通过浏览器访问。
以当前场景为例,您可以配置工作量证明为校验强度为高,执行方式为延迟 100ms 执行,在客户端未启用 JS(未完成检测)超过10次/10秒后执行(长时间)等待后响应,对客户端检测超时和 Bot 客户端保持静默方式对抗。配置结果如下所示:

6. 单击保存并发布,即可完成配置。