跳转到内容
搜索文档

顺序规则 (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) 阶段。如果您希望加入测试,请联系您的账户团队。

这篇文档对您有帮助吗?