防盗链的两类手段
防盗链用来限制资源被未授权地引用或盗刷流量,主流手段有两类。Referer 校验按来源页做白名单或黑名单,实现简单但请求头可以伪造;URL 签名由路径、时间戳与密钥计算得出,过期即失效,适合付费内容与直播流。实际部署通常把两者叠加,再按需加入 IP 或 UA 限制。
基本信息
| Referer 校验 | 按来源页做白名单或黑名单,成本低 |
|---|---|
| URL 签名 | 路径加时间戳按密钥签名,过期即失效 |
| 产品差异 | 各厂商鉴权类型与算法不同,参数名以文档为准 |
| 叠加方式 | Referer、签名与 IP 限制组合抬高盗用门槛 |
| 副作用 | 签名参数进入缓存键会降低命中率 |
典型使用场景
- 付费视频与课程资源,用签名 URL 控制有效期
- 图片与素材站防止被外站直接引用
- 直播流的播放地址按会话发放,防止地址扩散
- 下载站限制单次有效的下载链接
- 排查盗刷流量:先用访问日志确认来源特征再决定策略
签名 URL 生成思路
签名 URL 生成思路
# 伪代码:sign = md5(path + timestamp + key)
printf '%s' "/video/a.mp4${t}${key}" | md5sum
# 请求形式:https://cdn.example.com/video/a.mp4?sign=<sign>&t=<timestamp>
# key 只保存在服务端,绝不下发到客户端
# 各厂商算法与参数名不同,实现前先对照官方文档手段对比
| 手段 | 成本 | 强度 | 适用场景 |
|---|---|---|---|
| Referer 白名单 | 低 | 弱,可伪造 | 普通图片与静态素材 |
| Referer 黑名单 | 低 | 弱,易误伤 | 屏蔽特定盗链站点 |
| URL 签名 | 中 | 较强,可限时 | 付费内容、直播流 |
| IP 或 UA 限制 | 低 | 中,易误伤 | 内部接口与特定客户端 |
签名密钥写在客户端代码或前端配置里等于形同虚设;密钥只能在服务端使用,并要有轮换机制。
签名参数参与缓存键时要评估命中率影响:同一资源的多个签名 URL 会在边缘各缓存一份,命中率明显下降。
上线检查项
- 密钥只保存在服务端并制定轮换计划
- 验证正常请求可通过、伪造签名被拒绝
- 核对签名参数是否进入缓存键
- 观察上线后命中率与回源率的变化