2021 年 4 月 8 日,Cloudflare 宣布推出 URL 规范化,这是一项通过规范化 HTTP 请求 URI 路径来保护区域的功能。
恶意用户可以精心设计特定的 URI,而防火墙系统和源系统可能会对其进行不同的解释。当您启用 **Normalize incoming URLs(规范化传入的 URL)**时,所有过滤 URI 路径的规则都将收到规范形式的 URL,这为抵御这些恶意用户提供了额外的保护层。
Cloudflare 逐步为所有 Cloudflare 区域启用了 URL 规范化,但可能受此更改影响的区域除外。我们通过分析所有防火墙规则来确定受影响的区域,寻找在使用 URL 规范化技术时不再匹配的 HTTP 字段模式。
这些字段如下:
http.request.uri.pathhttp.request.full_urihttp.request.uri
为了防止您现有的防火墙规则行为发生任何变化,Cloudflare 没有自动为可能受这些更改影响的区域启用 URL 规范化。
Cloudflare 强烈建议您在 Rules(规则) > Overview(概览) > URL Normalization(URL 规范化) 中启用 Normalize incoming URLs(规范化传入 URL),以加强您区域的安全状态。如果不这样做,您的区域面临成功攻击的风险将会更大。恶意方可能会以规则未考虑到的方式精心设计 URL。
例如,如果恶意行为者将 l 字符编码为 %6C,则具有如 http.request.uri.path contains "/login" 等表达式的防火墙规则可能会被绕过。在这种情况下,如果禁用 URL 规范化,防火墙规则将无法匹配流量。
有关更多信息和其他示例,请参阅 URL 规范化的工作原理。
建议您:
- 更新任何受 URL 规范化更改影响的防火墙规则。
- 启用 URL 规范化。
这些步骤将确保您的区域具有更强的安全状态。
在启用 URL 规范化之前,您应该查看区域上受影响的防火墙规则,并采取以下方法之一:
-
编辑这些防火墙规则,以删除规范化后将不再触发的部分 — 例如,在 URL 路径中查找
//或../的任何规则。管理员以前创建这些规则是为了执行有限的 URL 规范化,现在可以安全地禁用然后删除这些规则。 -
如果您希望通过这些防火墙规则识别具有非规范化 URI 路径的访问者,您应该将其更新为使用原始(或 raw)非规范化字段。这些字段如下:
raw.http.request.uri.pathraw.http.request.full_uriraw.http.request.uri
一旦您更新了受影响的防火墙规则,请在 Rules(规则) > Overview(概览) > URL Normalization(URL 规范化) 中启用 URL 规范化。
Cloudflare 用户必须具有 Firewall 角色或管理员角色之一,才能在仪表板中访问 URL 规范化设置。