使用序列风控条件¶
序列风控用于按访问顺序与时间间隔识别异常行为。节点通过客户端 Cookie 跟踪同一客户端对各个序列端点的访问序列,您可以在自定义规则的条件中引用序列字段,拦截乱序访问、跳过关键步骤或间隔异常的请求。
适用场景¶
- 业务流程保护:要求转账前必须先查询账户列表与余额。
- 识别自动化脚本:拦截没有任何前序访问、直接请求敏感接口的流量。
- 识别机器行为:两次关键操作之间间隔过短,判定为非真人操作。
前提条件¶
- 已在 端点管理 页签配置序列端点,详见 配置序列端点。
- 已了解自定义规则的基本配置,详见 配置 HTTP DDoS 自定义规则。
序列字段¶
新增或编辑规则时,在「匹配类型」的序列风控分组中选择以下字段:
| 匹配类型 | 含义 | 可用运算符 |
|---|---|---|
| 当前操作 | 本次请求命中的端点 Op ID;未命中任何端点时为空 | 等于、不等于 |
| 前序操作 | 前序端点序列,从近到远排列,不含当前请求 | 任一出现过、均未出现过、严格按序、未按序出现 |
| 最近第 N 步前序 | 前序序列中第 N 步的端点,N 取 0–9,0 表示最近一次前序 | 等于、不等于 |
| 距端点上次访问 | 距该端点最近一次请求的毫秒数;从未访问过时为空 | 大于等于、小于 |
取值说明:
- 当前操作、最近第 N 步前序:从下拉列表中选择一个已配置的端点。
- 前序操作 配合「任一出现过」或「均未出现过」:选择一个或多个端点,最多 10 个,多个端点之间为「或」关系。
- 前序操作 配合「严格按序」或「未按序出现」:按期望的先后顺序选择端点形成顺序链,语义为前序中按「最早 → 最近」依次出现所选端点;可填写完成时限(毫秒),表示从最早一个端点到当前请求不得超过该时长。
- 距端点上次访问:先选择端点,再填写毫秒数。
注意:条件中引用的 Op ID 必须已存在于当前策略组的端点表中,否则规则无法保存。
语义边界¶
配置序列规则前,请了解以下行为特征:
- 被拦截的请求不写入序列:只有放行的请求才会进入前序序列。
- 从未访问过的端点,「距端点上次访问」为空,「大于等于」与「小于」均不命中。表达「间隔不足」请使用「小于」,并配合兜底规则覆盖从未访问的情况。
- 序列状态保存在客户端 Cookie 中:用户清除 Cookie、更换网络(IP 变化)或更换浏览器(UA 变化)后,序列将从零开始。对 IP 频繁漂移的移动网络场景,建议配合「任一出现过」等宽松匹配,避免误伤。
- 前序序列最多保留最近 10 个端点,超出窗口的更早访问不再参与匹配。
- 静态资源请求不参与序列,不会污染前序记录。
- 「距端点上次访问」受节点时钟精度影响,毫秒阈值建议预留一定余量。
配置示例:保护转账接口¶
场景:端点表已配置查账户列表(Op ID:aaaaaaaa)、查余额(bbbbbbbb)、发起转账(cccccccc)。要求转账前必须按顺序访问查账户列表、查余额,且从查账户列表到转账至少间隔 5 秒,否则拦截。
规则 1:放行合规请求¶
- 在 规则管理 页签单击 新增规则,规则名称填写「转账-合规放行」。
- 配置以下条件:
- 当前操作 等于
cccccccc。 - 前序操作 严格按序 选择
aaaaaaaa→bbbbbbbb。 - 距端点上次访问选择端点
aaaaaaaa,大于等于5000。 - 动作选择 跳过后续规则,日志选择记录。
- 保存后,将该规则调整到下述兜底规则之前。
规则 2:兜底拦截¶
- 新增规则,规则名称填写「转账-兜底拦截」。
- 配置条件:当前操作 等于
cccccccc。 - 动作选择 拦截,选择返回状态码与拦截页面。
- 保存后,确认其排在「转账-合规放行」之后。
满足顺序与间隔要求的转账请求在规则 1 命中后跳过后续规则;其余转账请求由规则 2 拦截。
验证结果¶
- 规则保存成功,列表中放行规则在前、拦截规则在后。
- 建议先将两条规则的动作设为 仅记录不拦截,在日志中观察命中情况,确认顺序与间隔判断符合预期后,再启用拦截动作。
常见问题¶
从未访问过某端点时,「距端点上次访问」条件会命中吗¶
不会。从未访问过时该字段为空,「大于等于」和「小于」均不命中。如需覆盖「从未访问或间隔不足」,请参考上文示例,用兜底拦截规则处理。
用户更换网络或清除 Cookie 后会怎样¶
序列状态保存在客户端 Cookie 中。清除 Cookie、IP 或 UA 变化都会导致序列重置,下次请求视为首次访问。移动端场景建议优先使用「任一出现过」等宽松条件。
顺序链最多能配置多长¶
前序序列最多保留最近 10 个端点。顺序链超过该长度时,超出窗口的前序不会被记录,条件可能无法命中。