Cloudflare 将客户编写的代码接入检查网页流量的安全网关。安全团队不再只能选择允许或阻止规则,还可加入直接处理请求或确认敏感信息是否确实有效的逻辑。这一变化减轻了为满足组织特定需求而运营独立代理的负担。

1. 流量处理与检测验证的推出时间不同

在 2026年10月15日的发布中,将流量发送至代码的 Forward 操作已推出公开测试版。用于计算策略条件的 Custom Function 计划在 2026年年底前提供。两项功能计划在正式发布时向所有套餐开放。

此外,数据丢失防护(DLP)的自定义验证函数自发布当日起即可使用。需区分用于生成策略条件的功能和用于验证检测结果的功能各自的上线时间。

2. 选择修改请求,还是生成判断依据

Forward 适用于网页请求策略允许的流量,首条匹配的转发规则会将请求发送至关联的 Worker。Worker 可接收并修改请求头和请求体,也可修改源服务器的响应。还可用于不修改请求、仅执行通知等异步任务的场景。

相比之下,Custom Function 在策略评估期间执行,返回字符串、数字或布尔值。它不是修改请求的工作台,而是生成判断所需值的计算器。返回值会在策略编辑器中与其他条件一起进行比较。

函数接收的信息取决于策略阶段。由于可利用用户身份、终端安全状态或连接信息,其适用范围不限于 HTTP,还可用于网络策略中的任意端口和协议。

3. 将角色信息返回为策略条件

以下是原文提供的自定义函数。它从请求的认证头中解码令牌,并返回第一个组的值。此值可用作允许规则的条件,但该示例未展示令牌签名验证步骤。

export class GatewayCustomSelector extends WorkerEntrypoint {
  async compute(ctx: GatewayContext): Promise<string> {
    const authHeader = ctx.request.headers.get("Authorization");
    if (!authHeader) return "anonymous";

    const token = authHeader.replace("Bearer ", "");
    const payload = JSON.parse(atob(token.split(".")[1]));
    return payload.groups?.[0] ?? "unknown";
  }
}

另一种用法是在访问敏感目的地时显示原因填写页面。将是否已填写的状态记录在带有效期的存储中,以便在设定周期内只询问一次,并将用户和原因保存在数据库中,用作审计记录。

4. 模式匹配后检查实际有效性

DLP 的正则表达式和词表检测可查找类似敏感信息的模式,但无法说明该数据是否确实与泄露或滥用有关。精确数据匹配方式也需要客户准备、维护和传输基准数据集,存在相应负担。

自定义验证函数会在检测项匹配后、执行策略前运行客户的验证逻辑。例如,检测到 GitHub 密钥后,可查询该密钥的状态,并根据其是否处于启用状态来决定是否认定检测匹配。这相当于在模式检查后,增加确认钥匙是否实际可用的步骤。

5. 基础设施负担减轻,代码设计责任仍在

Gateway 负责连接、加密和证书管理,客户代码因此可专注于转换逻辑。不过,处理实时请求的代码需缩小作用范围,避免损害用户体验。自定义策略函数适合快速、范围有限的无状态评估,应为每个函数设定失败时的备用行为,并指定默认返回值。

Cloudflare 表示,网关与代码执行服务在同一设备上运行,调用不会增加额外的网络链路,性能影响仅限于代码执行时间。尚未提供具体的延迟测量值。

转发的流量按标准 Workers 请求计费。也可使用免费套餐,但存在执行时间和每日请求数限制,增加处理量时需予以考虑。

此次变化的价值在于减少独立代理,同时将组织特定的判断纳入安全策略,而代价则是客户代码的设计与执行成本。