CDN空Referer盗刷防护实践

问题描述

使用CDN/DCDN服务时,可能会出现流量异常增长。经排查,此类问题通常由大量缺少Referer字段或Referer值为空的HTTP请求导致。

这类空Referer请求通常源于恶意盗刷行为。攻击者通过脚本或工具直接访问CDN资源URL,绕过正常的页面引用关系,可能导致以下问题:

  • CDN流量费用非预期增加,产生额外成本。

  • 源站带宽被大量消耗,影响正常业务。

  • 内容资源被非法盗用,损害业务利益。

此类问题通常发生在以下场景:

  • 静态资源(图片、视频、文件等)的URL被泄露或被爬虫抓取。

  • 攻击者使用自动化工具批量下载资源。

  • 第三方网站或应用未经授权直接引用资源。

问题分析

Referer的定义

Referer请求指HTTP请求头中Referer字段的两种状态:

  • Missing(缺失):HTTP请求头中不包含Referer字段。

  • Empty(空值):HTTP请求头中包含Referer字段,但其值为空字符串(Referer: )。

判断方法

可通过CDN控制台分析流量增长是否由空Referer盗刷导致。

访问路径:CDN控制台 > 统计分析 > 运营报表 > 热门Referer,查看空Referer请求的流量占比。如果空Referer的流量占比异常(例如超过50%),且与业务正常访问模式不符,则可能存在盗刷行为。

热门RefererRefer-的记录则为空Referer记录。

image

解决方案

使用ESA防范流量盗刷。ESA不仅具备CDN加速的能力,同时ESA也支持配置WAF,因此也具备更全面的防护能力。以下根据业务是否需要允许空Referer请求,提供两种配置方案:

  • 场景一:业务不允许任何空Referer请求 在ESA中配置WAF自定义规则,拦截所有空Referer请求。 配置路径:站点 > 安全防护 > WAF > 自定义规则。

    表达式为:(exists(http.referer) and len(http.referer) lt 1) or (not exists(http.referer))

    image

  • 场景二:业务需要允许部分空Referer请求(例如首页访问) 配置WAF规则拦截空Referer请求,同时添加白名单规则放行特定路径(如首页)。操作步骤如下:

    1. 配置自定义规则拦截空Referer 配置路径:站点 > 安全防护 > WAF > 自定义规则。

      image

    2. 配置白名单规则放行特定路径(此处以首页为例) 配置路径:站点 > 安全防护 > WAF > 白名单规则。

      表达式为:(http.host in {"your hostname"} and http.request.uri in {"/"})image