顺序规则 使用 Cookie 跟踪用户发出请求的顺序及请求之间的时间间隔,并通过 Cloudflare Rules 将这些信息提供给用户。这使您能够编写规则来匹配有效或无效的序列。用于验证序列的特定 Cookie 称为序列 Cookie。
- 您的账户必须有欺诈检测 (Fraud Detection) 订阅。
- 每个区域都必须通过端点管理配置要跟踪的端点。
您可以在 Cloudflare 仪表板上构建顺序自定义规则 或 使用 API 进行配置。
以下序列字段可用于:
- 自定义规则(
http_request_firewall_custom阶段) - 速率限制规则(
http_request_ratelimit) - 批量重定向(
http_request_redirect) - 请求头转换规则(
http_request_late_transform)
| 字段名称 | 描述 | 示例值 |
|---|---|---|
| 此字段包含与当前请求匹配的操作 ID。如果当前请求与 Endpoint Management 中定义的任何操作均不匹配,则该值为空字符串。 |
|
| 此字段包含序列中先前操作 ID 的数组,按从最近到最早的顺序排列,不包含当前请求。 |
|
| 此字段包含一个映射,其中键为操作 ID,值为该操作最近一次发生距今的毫秒数。 |
|
-
在 Cloudflare 仪表板中,转到 Security rules(安全规则) 页面。
Go to Security rules ↗ -
要创建新的空规则,请选择 Create rule(创建规则) > Custom rules(自定义规则)。
-
在 Rule name(规则名称) 中输入该规则的描述性名称。
-
在 When incoming requests match(当传入请求匹配时) 下,使用 Field(字段) 下拉列表按 Sequences 进行筛选,然后从以下选项中进行选择:
- Current Operation
- Previous Operations
- Elapsed time
-
在 Value(值) 下,选择编辑图标以使用 Builder 并并在侧面板上构建序列。
-
在 Select a hostname for this sequence 下,从下拉列表中选择所有或特定的主机名。或者,您可以使用搜索栏搜索特定的主机名。
-
从 Methods 下拉列表中选择所有方法或特定的请求方法。
-
按照您希望它们在序列中出现的顺序,选中每个端点的复选框。
-
设置完成时间。
-
选择 Save(保存)。
-
在 Then take action(接着采取措施) 下,在 Choose action(选择操作) 下拉菜单中选择规则操作。例如,选择 Block(阻止)将指示 Cloudflare 拒绝符合您指定条件的请求。
-
(可选)如果您选择了 Block 操作,您可以配置自定义响应。
-
在 Place at(放置位置) 下,选择规则触发的顺序。
-
要保存并部署您的规则,请选择 Deploy(部署)。如果您还没准备好部署规则,请选择 Save as Draft(保存为草稿)。
- 登录到 Cloudflare 仪表板 ↗,并选择您的账户和域。
- 转到 Security(安全性) > WAF > Custom rules(自定义规则)。
- 要创建新的空规则,请选择 Create rule(创建规则)。
- 在 Rule name(规则名称) 中输入该规则的描述性名称。
- 在 When incoming requests match(当传入请求匹配时) 下,使用 Field(字段) 下拉列表并选择:
- Current Operation
- Previous Operations
- Elapsed time
- 在 Value(值) 下,通过为序列选择主机名来构建序列。
- 按照您希望它们在序列中出现的顺序,选中每个端点的复选框。
- 设置完成时间。
- 选择 Save(保存)。
- 在 Then take action(接着采取措施) 下,在 Choose action(选择操作) 下拉菜单中选择规则操作。例如,选择 Block(阻止)将指示 Cloudflare 拒绝符合您指定条件的请求。
- (可选)如果您选择了 Block 操作,您可以配置自定义响应。
- 在 Place at(放置位置) 下,选择规则触发的顺序。
- 要保存并部署您的规则,请选择 Deploy(部署)。如果您还没准备好部署规则,请选择 Save as Draft(保存为草稿)。
- 如果您还没有 创建 API 令牌,请创建一个。该 API 令牌必须包含 区域 > 欺诈检测 > 编辑 权限。
- 获取您想要启用顺序规则的区域的 区域 ID。
- 使用 API Shield 的端点管理 添加您想要追踪的端点,并记下其短 ID (short ID)。
- 通过在以下 API 调用中添加您的 API 令牌和区域 ID 来启用顺序 cookie。
curl --request PUT \
https://api.cloudflare.com/client/v4/zones/{zone_id}/fraud_detection/sequence_cookies \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{"enabled": true}'启用顺序规则后,规则字段将被填充,您现在可以在规则中使用这些新字段。
禁用顺序规则将停止填充规则字段。如果您部署的规则仍然依赖于这些字段,这些规则可能无法按预期运行。在禁用顺序规则之前,请删除或禁用依赖于顺序字段的任何规则。
要禁用顺序规则:
- 如果您还没有 创建 API 令牌,请创建一个。该 API 令牌必须包含 区域 > 欺诈检测 > 编辑 权限。
- 获取您想要启用顺序规则的区域的 区域 ID。
- 使用 API Shield 的端点管理 添加您想要追踪的端点,并记下其短 ID (short ID)。
- 在以下 API 调用中通过您的 API 令牌、区域 ID 并将
enabled设置为false来禁用顺序 cookie。
curl --request PUT https://api.cloudflare.com/client/v4/zones/{zone_id}/fraud_detection/sequence_cookies \
--header "Authorization: Bearer <API_TOKEN>" \
--data '{"enabled": false}'顺序规则向 Cloudflare Rules 引入了三个新字段。所有这些字段都通过短 ID 引用操作。拥有欺诈检测 (Fraud Detection) 订阅的账户可以通过在 Cloudflare 仪表板中查看 API Shield > Endpoint Management(端点管理) 中的端点详细信息来引用短 ID。没有欺诈检测的账户无法访问此字段。
Cloudflare 最多仅在顺序中存储最近的 10 个操作,最长存储一小时。如果顺序中有超过 10 个操作,较旧的操作将被丢弃,并且不会包含在以下字段中。同样,如果操作发生在一小时前,它也将不包含在以下字段中。
客户必须先请求端点 A,然后再请求端点 B。
cf.sequence.current_op eq "bbbbbbbb" and
any(cf.sequence.previous_ops[*] == "aaaaaaaa")cf.sequence.current_op eq "bbbbbbbb" and
not any(cf.sequence.previous_ops[*] == "aaaaaaaa")客户必须在请求端点 B 之前至少一秒请求端点 A。
cf.sequence.current_op eq "bbbbbbbb" and
cf.sequence.msec_since_op["aaaaaaaa"] ge 1000cf.sequence.current_op eq "bbbbbbbb" and
not cf.sequence.msec_since_op["aaaaaaaa"] ge 1000由于我们的 cookie 设置了 Secure 属性,因此 Cloudflare 仅支持 HTTPS 请求。
顺序规则目前处于内测 (private beta) 阶段。如果您希望加入测试,请联系您的账户团队。