WEB网站图片文件视频资源常见防盗链实现方案
防盗链(Hotlink Protection)主要用于防止第三方网站未经授权直接引用自身服务器的资源(如图片、视频、文件等),避免资源被盗用导致带宽消耗、版权侵犯等问题。以下是常见的实现方案、技术原理及案例分析:
Referer 字段,判断请求来源是否在允许的域名列表中。Referer 白名单。Referer 不在白名单中,返回 403 或重定向到错误页。 location ~* \.(jpg|png|gif|mp4)$ {
valid_referers none blocked server_names *.example.com ~\.google\.;
if ($invalid_referer) {
return 403;
# 或返回替代图片:rewrite ^ /anti-hotlink.png;
}
}
RefererReferer。valid_referers 拦截非白名单请求,节省 30% 带宽消耗。Referer 为空,需通过 valid_referers none 放行。观看sign=md5(密钥+时间戳+文件路径))。?sign=xxx&expires=1609459200。 const crypto = require('crypto');
function generateSignedURL(filePath, secret) {
const expires = Date.now() + 3600 * 1000; // 1小时有效
const signature = crypto.createHash('md5')
.update(`${secret}${expires}${filePath}`)
.digest('hex');
return `/files/${filePath}?expires=${expires}&sign=${signature}`;
}
location /protected/ {
allow 192.168.1.0/24;
allow 10.0.0.1;
deny all;
}
Access-Control-Allow-Origin: https://your-domain.com。fetch 请求的 mode: 'cors')。Access-Control-Allow-Origin 为合作站点,防止 JS 被盗用。 /images/2023/10/01/abc123.jpg → /images/2023/10/02/xyz456.jpg
不同场景下防盗链方案的选择:
通过技术组合和持续监控,可有效降低资源被盗用的风险。
阅读原文:原文链接