CDN流量盗刷防不胜防?防盗链与Referer配置实战
本内容发表于:2026-06-30 09:59:28
浏览量
1066

CDN流量盗刷防不胜防?防盗链与Referer配置实战

微信图片_2026-06-30_095823_659.png

去年一个客户找到我,一脸无奈:“这个月CDN账单翻了三倍,业务量没涨,是不是被人刷了?”

我让他打开CDN控制台的流量分析,按Referer排序看了一眼。排名第一的不是他的网站域名,而是一个陌生的域名——他的图片被那个网站直接引用了。

他这才明白:自己的CDN资源被别人盗链了。

更麻烦的是,他的防盗链配置只设了Referer白名单,却勾选了“允许空Referer”。攻击者直接构造不带Referer的请求,绕过了白名单。

这是CDN防盗链最常见的问题:不是没设防盗链,是设了但没生效。

01 流量盗刷是怎么回事

流量盗刷,简单说就是别人未经授权直接引用你的CDN资源,消耗你的流量和带宽

盗刷者是怎么做到的?

你的CDN资源URL是公开的。第三方网站直接把图片、视频链接放到自己页面上,用户访问时直接调用你的CDN地址。每加载一次,你的账单就增加一次。

盗刷为什么很难防?

因为CDN资源本身就是公开访问的。攻击者不需要破解密码,只需要拿到你的资源URL。如果Referer防盗链没配好,或者允许空Referer被绕过,图片就直接被盗用了

02 Referer防盗链的原理

Referer是HTTP请求头中的一个字段,告诉服务器“用户从哪个页面跳转过来的”。比如用户在www.yourdomain.com上加载了一张图片,请求就会带上Referer: www.yourdomain.com

白名单模式:只允许特定域名(如自己的网站)的请求访问资源,其他来源一律拒绝

黑名单模式:拒绝特定域名的请求,其他来源放行

那家客户的配置是白名单,但允许了空Referer——这意味着任何不带Referer字段的请求都能绕过白名单,直接访问资源。

03 空Referer是怎么回事

空Referer有两种情况:请求头中没有Referer字段,或者Referer字段为空字符串

正常业务会产生空Referer吗?

会的。用户在浏览器地址栏直接输入URL访问、从书签打开、使用某些APP内嵌浏览器——这些场景都可能不带Referer

攻击者如何利用空Referer?

构造不带Referer的HTTP请求,直接访问CDN资源URL。对于配置了白名单但允许空Referer的情况,这类请求完全不会被拦截

那家客户就是这个问题。攻击者用脚本直接请求图片URL,不带Referer,白名单失效。

04 如何正确配置防盗链

第一步:确定是否允许空Referer

如果业务场景允许(比如用户可能直接访问资源),建议用多层防护——Referer白名单配合IP黑白名单或流量检测

第二步:配置白名单

在CDN控制台开启防盗链,选择白名单模式,填入自己的域名。注意通配符用法:*.example.com匹配所有子域名,example.com只匹配主域名

第三步:配置空Referer处理

如果业务不允许空Referer,在防盗链配置中关闭“允许空Referer访问”。如果有正常场景需要空Referer(如首页直接访问),可以用URL鉴权做补充防护。

05 高阶防护:URL鉴权

Referer可以被伪造。curl命令可以随意修改Referer头。对于高价值资源,需要用URL鉴权

原理:CDN节点对请求URL进行签名验证。只有携带正确签名的请求才能访问资源

工作流程:源站生成带签名的URL,分发给合法用户。CDN节点收到请求后,用相同的密钥和算法验证签名。验证通过才返回内容

那家客户后来对核心图片资源开启了URL鉴权,盗刷问题彻底解决。

写在最后

CDN流量盗刷,防的不是“坏人”,是“没设防的人”。Referer配置正确、空Referer处理得当、高价值资源加URL鉴权——三层做好,盗刷基本上就堵住了。

那家客户后来改了配置:关闭空Referer、收紧白名单、核心资源加鉴权。次月账单恢复正常。运维负责人说:“以前觉得防盗链就是开个开关,现在知道,空Referer才是最大的漏勺。”