规则负责“能不能访问”,白名单负责“谁可以访问”,两者必须分层部署、统一维护、定期回收,否则合作方会被误伤,盗链者仍能绕过。 下面按配置、选型、多域名管理、成本和地域差异拆开讲,尽量给到可直接照着做的路径。
防盗链白名单怎么配置才不误伤合作方
很多站点一上来就把合作方域名塞进白名单,结果测试环境正常、线上一到活动就 403,问题不在白名单本身,而在规则顺序和匹配细节。
先把三类规则的职责分清
- 身份规则:Referer、Origin、IP、User-Agent,回答“请求从哪来”。
- 凭证规则:签名 URL、时间戳、Token,回答“这次访问是否被授权”。
- 兜底规则:空 Referer 处理、爬虫放行、异常限速,回答“边界情况怎么办”。
行业共识认为,身份规则适合稳定合作方,凭证规则适合动态或临时合作场景,两者混用而不分优先级,是误伤的主要来源。
Referer 匹配的几个实操细节
以 Nginx 为例,常见写法是:
valid_referers none blocked server_names
.partner-a.com partner-a.com
.partner-b.cn;
if ($invalid_referer) {
return 403;
}
这段配置能跑,但有几个坑要提前处理:
none会放行所有空 Referer 请求,等于给盗链留了后门,更稳的做法是空 Referer 单独走签名校验,而不是直接放行。.partner-a.com通常不匹配partner-a.com本身,主域名要单独写。- Referer 可能带路径、端口、大小写差异,匹配前应统一截取到域名部分再做比对。
- HTTPS 页面跳转到 HTTP 资源时,浏览器可能不发送 Referer,合作方会看到一片 403。
签名 URL 和白名单要配合使用
合作方域名多、变动频繁时,别把白名单当唯一手段,给每个合作方分配密钥,资源链接带 expire 和 sign 参数,CDN 边缘节点校验通过才回源,白名单只保留长期稳定的主站域名,临时活动域名走签名,到期自动失效,这样白名单不会越滚越长,回收压力也小。
上线前必须跑的验证清单
- 用合作方真实页面发起请求,确认 Referer 完整送达。
- 模拟空 Referer、伪造 Referer、直接粘贴 URL 三种盗链方式。
- 检查搜索引擎爬虫、站内搜索、APP 内嵌 WebView 是否被误拦。
- 观察 CDN 日志中 403 比例,灰度放量后再全量。
CDN防盗链和源站防盗链哪个更适合白名单协同
这是选型时问得最多的一类问题,答案不是二选一,而是看白名单规模和维护方式,下面这张表把差异摆清楚:
| 对比项 | CDN 层防盗链 | 源站防盗链 |
|---|---|---|
| 拦截位置 | 边缘节点,请求不一定回源 | 应用或 Web 服务器 |
| 白名单生效速度 | 控制台配置,分钟级 | 改配置重启,视架构而定 |
| 规则复杂度 | 支持 Referer、IP、UA、签名 | 可写任意逻辑,灵活但需开发 |
| 误伤排查 | 依赖 CDN 日志和报表 | 本地日志全量可查 |
| 适合场景 | 大流量、多合作方、静态资源 | 接口鉴权、复杂业务规则 |
业内专家指出,静态资源占比较大的站点,把基础 Referer 和 IP 白名单放在 CDN 层,源站只做二次校验,整体误伤率和回源带宽都能降下来,纯接口类业务则更适合在源站做签名和权限判断,CDN 层只做粗粒度限速。
分层部署的建议顺序
- 第一层 CDN:Referer 白名单、IP 黑名单、UA 过滤、签名校验。
- 第二层源站:业务级 Token 校验、合作方身份映射、访问频次控制。
- 第三层日志:把 CDN 日志和源站日志按请求 ID 关联,403 集中出现时能快速定位是规则问题还是合作方改版。
多域名合作防盗链白名单如何管理
合作方一多,白名单就会从十几条涨到几百条,靠人工改配置迟早出事,要把它当成一份有生命周期的配置资产来管。
用配置中心代替散落各处的名单
把白名单存成结构化文件,YAML 或 JSON,字段至少包含:域名、合作方名称、业务线、生效时间、过期时间、申请人、审批单号,配置中心推送到 CDN 和源站,避免一处改了另一处没改。
- domain: "static.partner-a.com" owner: "市场部-活动组" scope: "图片与视频" expire: "2026-06-30" ticket: "OPS-2026-0412"
建立申请、审批、验证、回收的闭环
- 申请时要求填写具体资源路径,不接受“整个域名全放开”。
- 审批环节确认合作方是否真的需要跨域引用,能否改用签名 URL。
- 配置后由申请方在测试环境验证,截图留档。
- 到期前自动提醒,未续期的一律下线,防止“僵尸白名单”。
审计要看三个指标
- 白名单条目总数及近三个月新增数。
- 每个域名的实际请求量,长期为零的优先清理。
- 403 请求中来自白名单域名的比例,持续偏高说明规则和合作方页面不匹配。
防盗链配置一般多少钱,地域差异在哪
基础防盗链功能多数 CDN 厂商不单独收费,包含在流量或带宽套餐里;Referer 黑白名单、IP 黑白名单通常也是标配,真正产生费用的是签名鉴权、动态令牌、高级 Bot 管理、定制规则引擎这类能力,一般按功能包或项目计费,价格从几千到数万元不等,取决于域名数量、规则复杂度和是否需要二次开发,近年来不少厂商把签名鉴权下放到边缘计算产品里,按请求数计费,小流量站点反而更划算。
北京网站防盗链白名单设置的注意点
北京地区的站点有几个现实约束:一是备案主体和实际运营主体不一致时,合作方域名审核要额外留痕;二是涉及政务、金融类合作,白名单变更往往要走内部变更流程,不能只靠运维口头确认;三是北方节点回源链路和南方有差异,灰度发布时建议分地域观察 403 数据,实操上,先在控制台把合作域名加入测试分组,用北京节点做小流量验证,确认无误再推全量。
规则与白名单协同的收束
防盗链不是加一条规则就完事,而是把“身份判断”和“授权凭证”拆开,让白名单管稳定合作、签名管临时访问、日志管事后追责。白名单越短、越有期限、越有审批记录,防盗链就越不容易变成误伤链。
关于规则与合法合作域名白名单协同管理的常见问题
白名单里的合作域名被恶意页面引用怎么办?
说明该域名本身已被盗用或合作方页面存在漏洞,处理顺序是:先查 CDN 日志中该域名的 Referer 完整路径和来源 IP,确认是否为合作方真实页面;再临时收紧到具体路径或改用签名 URL;最后要求合作方排查页面是否被植入外链,白名单只解决“谁可以引用”,不解决“引用方页面是否可信”。
防盗链开启后百度蜘蛛抓取异常怎么排查?
先看 CDN 日志里百度蜘蛛的 UA 和 IP 是否命中拦截规则,常见原因是 Referer 为空被一并拦掉,处理方式是把搜索引擎 IP 段加入放行名单,或对空 Referer 的 GET 请求单独放行静态资源,同时用百度搜索资源平台的抓取诊断工具验证返回码,改完后观察几天抓取量是否恢复,再决定是否保留该放行规则。
签名 URL 的过期时间设多长比较合适?
按资源类型分档:商品图、活动页素材这类可缓存内容,过期时间可以设到数小时;视频切片、付费文档这类高价值资源,通常控制在几十分钟以内,并配合一次性 Token 防止链接外传,过期时间不是越长越省事,越长越接近“永久公开链接”,防盗链效果会明显打折。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/795747.html


