返回列表 发布新帖
查看: 13|回复: 0

如何配置防盗链?还有哪些防资源盗用的方式?

发表于 昨天 17:32 | 查看全部 |阅读模式

这里或许是互联网从业者的最后一片净土,随客社区期待您的加入!

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在网站运维中,图片、视频、下载文件等静态资源被外站直接引用(盗链)是一个非常常见的问题。
盗链不仅会消耗服务器或 CDN 流量,还可能导致带宽被刷满、费用上涨,甚至影响正常用户访问。
本文将从三个方面展开:
  • 什么是盗链与防盗链
  • 常见的防盗链配置方式(含 Nginx 示例)
  • 除了防盗链,还有哪些更有效的手段?
一、什么是盗链?为什么要防?
1. 什么是盗链
盗链指的是:
其他网站直接引用你站点的资源 URL(图片、视频、JS、下载文件等),但访问请求并不经过你的网站页面。
例如:
你的网站:
https://example.com/images/a.jpg

外站在自己页面中直接引用:
<img src="https://example.com/images/a.jpg">

用户在访问外站时,你的服务器或 CDN 仍然要为这些请求提供流量。
2. 为什么要防盗链
不防盗链可能带来的问题:
  • 流量被大量消耗(尤其是图片、视频)
  • CDN 流量费用增加
  • 带宽被占满,影响正常访问
  • 被恶意刷小文件,持续耗资源
二、最常见的防盗链方式:Referer 防盗链
1. Referer 防盗链原理
浏览器在请求资源时,通常会携带 Referer 请求头,用来表示当前请求来源页面的地址。
防盗链的本质就是:
  • 判断 Referer 是否来自允许的域名
  • 不在白名单中的请求,直接拒绝或返回默认图片
2. Nginx 防盗链配置示例(图片)
location ~* \.(jpg|jpeg|png|gif|webp)$ {
    valid_referers none blocked
        example.com
        www.example.com
        *.example.com;
    if ($invalid_referer) {
        return 403;
        # 或者返回默认图片
        # rewrite ^/.*$ /images/forbidden.jpg break;
    }
}

说明:
  • valid_referers:定义允许的来源
  • none:允许无 Referer(如直接访问)
  • blocked:允许被代理隐藏 Referer 的请求
  • $invalid_referer:Referer 不在白名单时为 true
3. CDN 防盗链(更推荐)
如果你的网站已经接入 CDN,优先在 CDN 层做防盗链:
优点:
  • 不消耗源站资源
  • 防护效果更好
  • 可视化配置,简单安全
常见支持方式:
  • Referer 白名单 / 黑名单
  • 通配符域名匹配(如 *.example.com)
  • 一行一个规则,支持 * 匹配
示例规则:
  • example.com
  • *.example.com
  • *google*
三、防盗链的局限性
虽然 Referer 防盗链很常用,但它并不是万能的:
  • Referer 可以被伪造
  • 部分工具或脚本请求没有 Referer
  • 无法防止“直接下载 URL”的行为
  • 对视频、防下载文件效果有限
因此,在实际生产环境中,通常会搭配其他方式一起使用。
四、除了防盗链,还有哪些方式?
1. Token / 签名防护(强烈推荐)
适合:
  • 图片
  • 视频
  • 下载文件
  • API 接口
原理:
  • 资源 URL 中携带时间戳 + 签名
  • 超时或签名错误,直接拒绝访问
示例 URL:
https://cdn.example.com/video.mp4?ts=1710000000&sign=xxxx

优点:
  • 无法被长期盗用
  • 安全性高
  • CDN 原生支持
2. 防盗链 + 缓存策略结合
思路:
  • 热资源允许缓存
  • 异常来源不缓存或低 TTL
  • 恶意刷流量无法形成缓存命中
适合防:
  • 小文件高频刷请求
  • 低成本刷 CDN 流量
3. 限制单 IP 请求频率(Rate Limit)
适合防:
  • 图片被脚本刷
  • API 或下载接口被滥用
Nginx 示例:
limit_req_zone $binary_remote_addr zone=img:10m rate=10r/s;
location ~* \.(jpg|png|gif)$ {
    limit_req zone=img burst=20 nodelay;
}

4. 启用 WAF(非常重要)
WAF 可以做:
  • 频率限制
  • 人机识别
  • CC 攻击防护
  • 异常 UA / Referer 拦截
对付以下情况非常有效:
  • 模拟浏览器盗链
  • Referer 伪造
  • 自动化刷请求
5. 修改资源访问路径(隐藏真实地址)
思路:
  • 静态资源通过程序中转
  • 不暴露真实 CDN 路径
  • 非页面请求直接拒绝
适合:
  • 高价值图片
  • 私有下载资源
五、推荐的组合防护方案
普通网站(图片为主)
  • CDN Referer 防盗链
  • Nginx 限制频率
  • 合理缓存策略
视频 / 下载站点
  • Token 签名
  • 访问有效期
  • CDN + WAF
经常被刷流量的网站
  • CDN 防盗链
  • WAF CC 防护
  • 源站限速
  • IP 封禁策略
六、总结
防盗链不是“配了就万事大吉”,而是一个分层防护体系:
  • 防盗链:防普通盗用
  • Token:防长期引用
  • 频率限制:防刷请求
  • WAF:防自动化攻击
真正有效的方案,一定是多种手段组合使用。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2001-2025 Suike Tech All Rights Reserved. 随客交流社区 (备案号:津ICP备19010126号) |Processed in 0.103572 second(s), 7 queries , Gzip On, MemCached On.
关灯 在本版发帖返回顶部
快速回复 返回顶部 返回列表