跳转到内容
搜索文档

顺序规则 (Sequence rules)

最后更新 查看 MarkdownAgent 设置

顺序规则 使用 Cookie 跟踪用户发出请求的顺序及请求之间的时间间隔,并通过 Cloudflare Rules 将这些信息提供给用户。这使您能够编写规则来匹配有效或无效的序列。用于验证序列的特定 Cookie 称为序列 Cookie。

前提条件

  • 您的账户必须有欺诈检测 (Fraud Detection) 订阅。
  • 每个区域都必须通过端点管理配置要跟踪的端点。

您可以在 Cloudflare 仪表板上构建顺序自定义规则使用 API 进行配置


可用性

以下序列字段可用于:

字段名称描述示例值

cf.sequence.current_op
String

此字段包含与当前请求匹配的操作 ID。如果当前请求与 Endpoint Management 中定义的任何操作均不匹配,则该值为空字符串。

c821cc00

cf.sequence.previous_ops
Array<String>

此字段包含序列中先前操作 ID 的数组,按从最近到最早的顺序排列,不包含当前请求。

如果某个操作重复出现,它将在序列中多次出现。

["f54dac32", "c821cc00", "a37dc89b"]

cf.sequence.msec_since_op
Map<Number>

此字段包含一个映射,其中键为操作 ID,值为该操作最近一次发生距今的毫秒数。

此字段不包含当前请求或操作,仅考虑序列中的先前操作。

{"f54dac32": 1000, "c821cc00": 2000}


通过 Cloudflare 仪表板构建顺序自定义规则

  1. 在 Cloudflare 仪表板中,转到 Security rules(安全规则) 页面。

    Go to Security rules ↗
  2. 要创建新的空规则,请选择 Create rule(创建规则) > Custom rules(自定义规则)

  3. Rule name(规则名称) 中输入该规则的描述性名称。

  4. When incoming requests match(当传入请求匹配时) 下,使用 Field(字段) 下拉列表按 Sequences 进行筛选,然后从以下选项中进行选择:

    • Current Operation
    • Previous Operations
    • Elapsed time
  5. Value(值) 下,选择编辑图标以使用 Builder 并并在侧面板上构建序列。

  6. Select a hostname for this sequence 下,从下拉列表中选择所有或特定的主机名。或者,您可以使用搜索栏搜索特定的主机名。

  7. Methods 下拉列表中选择所有方法或特定的请求方法。

  8. 按照您希望它们在序列中出现的顺序,选中每个端点的复选框。

  9. 设置完成时间。

  10. 选择 Save(保存)

  11. Then take action(接着采取措施) 下,在 Choose action(选择操作) 下拉菜单中选择规则操作。例如,选择 Block(阻止)将指示 Cloudflare 拒绝符合您指定条件的请求。

  12. (可选)如果您选择了 Block 操作,您可以配置自定义响应。

  13. Place at(放置位置) 下,选择规则触发的顺序。

  14. 要保存并部署您的规则,请选择 Deploy(部署)。如果您还没准备好部署规则,请选择 Save as Draft(保存为草稿)

  1. 登录到 Cloudflare 仪表板,并选择您的账户和域。
  2. 转到 Security(安全性) > WAF > Custom rules(自定义规则)
  3. 要创建新的空规则,请选择 Create rule(创建规则)
  4. Rule name(规则名称) 中输入该规则的描述性名称。
  5. When incoming requests match(当传入请求匹配时) 下,使用 Field(字段) 下拉列表并选择:
    • Current Operation
    • Previous Operations
    • Elapsed time
  6. Value(值) 下,通过为序列选择主机名来构建序列。
  7. 按照您希望它们在序列中出现的顺序,选中每个端点的复选框。
  8. 设置完成时间。
  9. 选择 Save(保存)
  10. Then take action(接着采取措施) 下,在 Choose action(选择操作) 下拉菜单中选择规则操作。例如,选择 Block(阻止)将指示 Cloudflare 拒绝符合您指定条件的请求。
  11. (可选)如果您选择了 Block 操作,您可以配置自定义响应。
  12. Place at(放置位置) 下,选择规则触发的顺序。
  13. 要保存并部署您的规则,请选择 Deploy(部署)。如果您还没准备好部署规则,请选择 Save as Draft(保存为草稿)

通过 API 管理顺序规则

启用顺序规则

  1. 如果您还没有 创建 API 令牌,请创建一个。该 API 令牌必须包含 区域 > 欺诈检测 > 编辑 权限。
  2. 获取您想要启用顺序规则的区域的 区域 ID
  3. 使用 API Shield 的端点管理 添加您想要追踪的端点,并记下其短 ID (short ID)。
  4. 通过在以下 API 调用中添加您的 API 令牌和区域 ID 来启用顺序 cookie。
API 调用bash
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}'
  1. 使用表达式编辑器通过 自定义规则速率限制规则转换规则 编写基于顺序或时间的规则。您可以将这些规则放在“仅记录 (log only)”模式下进行监控。

启用顺序规则后,规则字段将被填充,您现在可以在规则中使用这些新字段。

禁用顺序规则

禁用顺序规则将停止填充规则字段。如果您部署的规则仍然依赖于这些字段,这些规则可能无法按预期运行。在禁用顺序规则之前,请删除或禁用依赖于顺序字段的任何规则。

要禁用顺序规则:

  1. 如果您还没有 创建 API 令牌,请创建一个。该 API 令牌必须包含 区域 > 欺诈检测 > 编辑 权限。
  2. 获取您想要启用顺序规则的区域的 区域 ID
  3. 使用 API Shield 的端点管理 添加您想要追踪的端点,并记下其短 ID (short ID)。
  4. 在以下 API 调用中通过您的 API 令牌、区域 ID 并将 enabled 设置为 false 来禁用顺序 cookie。
API 调用bash
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。

有效顺序txt
cf.sequence.current_op eq "bbbbbbbb" and
any(cf.sequence.previous_ops[*] == "aaaaaaaa")
无效顺序txt
cf.sequence.current_op eq "bbbbbbbb" and
not any(cf.sequence.previous_ops[*] == "aaaaaaaa")

客户必须在请求端点 B 之前至少一秒请求端点 A。

有效顺序txt
cf.sequence.current_op eq "bbbbbbbb" and
cf.sequence.msec_since_op["aaaaaaaa"] ge 1000
无效顺序txt
cf.sequence.current_op eq "bbbbbbbb" and
not cf.sequence.msec_since_op["aaaaaaaa"] ge 1000

限制

由于我们的 cookie 设置了 Secure 属性,因此 Cloudflare 仅支持 HTTPS 请求。


可用性

顺序规则目前处于内测 (private beta) 阶段。如果您希望加入测试,请联系您的账户团队。

这篇文档对您有帮助吗?