HTTP 协议中的 PUT、DELETE 方法常用于写入、修改和删除资源。如果 CDN 域名没有在边缘节点限制这些方法,攻击者可以尝试向源站发送 PUT 请求上传恶意文件,或用 DELETE 请求删除接口数据。即使源站大部分接口只接受 GET,部分框架或对象存储网关仍可能暴露危险方法。阿里云 CDN 提供请求方法过滤功能,可以在边缘直接拦截指定方法,减少源站暴露面。下面展开说明。

为什么要在 CDN 层禁止 PUT/DELETE
CDN 的核心职责是缓存和分发内容,大多数业务只需要 GET 和 HEAD 方法。PUT、DELETE、PATCH、TRACE 等方法通常用于源站资源管理或调试,并不适合直接暴露给公网。若源站在框架层没有做严格的方法限制,例如基于 WebDAV 的静态托管、对象存储网关或带上传功能的临时接口,攻击者可能利用这些方法对源站发起未授权写入、删除和探测。
在 CDN 处理链路中,未配置过滤时,边缘节点会把无法识别的方法直接转发回源。这意味着危险方法不会因为经过 CDN 而自动消失。CDN 层拦截的优势在于:请求不必回源,既能降低源站压力,也能避免攻击者绕过源站防火墙。对安全团队来说,这是收敛暴露面的一层有效防线,但并不能替代源站鉴权。
需要注意,HTTP 方法是对大小写敏感的,标准方法应由大写字母组成。某些扫描器会尝试小写 put、delete 甚至混合大小写,因此配置过滤规则时要结合实际测试。阿里云 CDN 的请求方法过滤通常按标准大写方法匹配,具体行为可以以控制台文档为准。
控制台配置步骤
配置前需要确认域名已接入阿里云 CDN 且处于正常运行状态。进入 CDN 控制台后,在域名管理列表选择目标域名,进入该域名的配置页。找到安全防护或访问控制分类下的请求方法过滤,默认状态通常为关闭。
开启功能后,可以选择过滤模式为禁止指定方法或允许指定方法。对大多数静态资源业务,推荐使用禁止模式,将 PUT、DELETE、PATCH、TRACE 等方法加入黑名单。部分控制台会提供常用危险方法复选框,也可以手动输入需要拦截的方法,多个方法用逗号分隔。配置项一般包括:
- 过滤模式:禁止指定方法 / 允许指定方法
- 方法列表:PUT、DELETE、PATCH、TRACE、OPTIONS 等
- 命中策略:返回 403 状态码
保存后通常需要等待数分钟使配置下发到所有边缘节点。不同地域和配置版本可能存在差异,建议在业务低峰期操作,并保留 GET、HEAD、POST 等业务需要的方法。若站点存在跨域请求,OPTIONS 预检方法需要谨慎拦截,否则可能导致跨域请求失败。
验证拦截效果
配置生效后,可以通过命令行工具验证不同请求方法的响应。以下示例假设 CDN 加速域名为 ipipp.com,可以先发送一个正常 GET 请求,确认业务可用,再分别发送 PUT 和 DELETE 请求,观察状态码是否变为 403。
# GET 请求应正常返回 curl -I https://ipipp.com/index.html # PUT 请求应被边缘拦截 curl -v -X PUT https://ipipp.com/index.html # DELETE 请求应被边缘拦截 curl -v -X DELETE https://ipipp.com/index.html
如果 PUT 和 DELETE 返回 403,而 GET 返回 200 或 304,说明规则已生效。部分 CDN 节点可能需要更长时间同步,测试时可以多换几个解析节点或等待十分钟左右再次验证。若使用 CDN 回源鉴权、自定义页面等功能,拦截返回的响应体会由 CDN 生成,与源站无关。
在测试时还要注意,不要对生产环境中确实需要 PUT 写入的接口直接做黑名单拦截。比如网站后台使用 PUT 上传文件,又通过同一 CDN 域名提供服务,此时应使用允许模式或单独拆分域名,避免影响正常业务。
与源站限制和 WAF 的配合
请求方法过滤只是边缘层的一种访问控制,不能因为开启该功能就省略源站的方法限制。正确的做法是分层防护:CDN 边缘拦截大部分明显危险的方法,源站 Nginx、Apache 或应用框架再次限制允许的方法,形成纵深防御。如果攻击者绕过 CDN 直接访问源站 IP,源站在没有限制的情况下仍然可能暴露危险方法。
以 Nginx 为例,可以在源站配置中仅允许 GET、HEAD、POST,并对其他方法返回 403 或 405。基础配置如下:
if ($request_method !~ ^(GET|HEAD|POST)$) {
return 403;
}
这段配置可以和 CDN 规则保持一致。需要注意的是,Nginx 的 if 语句使用上有一定限制,但在 server 级别做方法判断是常见做法。也可以使用 limit_except 指令来更语义化地限制方法。
如果业务需要更复杂的规则,例如按路径放行 PUT、按 IP 限制 DELETE,可以考虑使用 WAF 或 API 网关。WAF 能提供更细粒度的自定义规则和告警能力,而请求方法过滤的优势是配置简单、边缘生效快。两者结合可以让源站暴露面进一步收敛。