Web资源防盗链

本文介绍了Web资源防盗链的概念、工作原理和实现方法,重点讲解了如何通过Nginx的Referer检测和签名验证来防止盗链,以及如何应对伪造Referer的问题,旨在帮助网站保护自己的资源免受非法利用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 什么是防盗链
  • 防盗链的工作原理
  • 防盗链的实现方法

盗链概念

盗链是指在自己的页面上展示一些并不在自己服务器上的内容。
获得他人服务器上的资源地址,绕过别人的资源展示页面,直接在自己的页面上向最终用户提供此内容。
常见的是小站盗用大站的图片、音乐、视频、软件等资源。
通过盗链的方法可以减轻自己服务器的负担,因为真实的空间和流量均是来自别人的服务器。

防盗链概念

防止别人通过一些技术手段绕过本站的资源展示页面,盗用本站的资源,让绕开本站的资源展示页面的资源链接失效。
可以大大减轻服务器及带宽的压力。

防盗链工作原理

1、通过Referer或者签名,网站可以检测目标网页访问的来源网页,如果是资源文件,则可以跟踪到显示他的网页地址。
一旦检测到来源不是本站即进行阻止或者返回指定的页面。
2、通过计算签名的方式,判断请求是否合法,如果合法则显示,否则返回错误信息。

Referer

Referer在请求头中

Nginx模块ngx_http_referer_module用于阻挡来源非法的域名请求;
Nginx指令valid_referers,全局变量$invalid_referer;

valid_referers none | blocked | server_names | string ...;

none: “Referer”来源头部为空的情况
blocked:“Referer” 来源头部不为空,但是里面的值被代理或者防火墙删除了,这些值都不以http://或者https://开头。
server_names:"Referer"来源头部包含当前的server_names;

location ~ .*\.(gif|jpg|png|flv|swf|rar|zip)${
	valid_referers none blocked imooc.com *.imooc.com;
	if($invalid_referer){
		#return 403;
		rewrite ^/ http://www.imooc.com/403.jpg;
	}
}

伪造Referer 可以使用加密签名解决

使用第三方模块【需要先安装】HttpAccessKeyModule实现Nginx防盗链

accesskey on|off       //模块开关
accesskey_hashmethod md5 | sha-1      //签名加密方式
accesskey_arg GET     //参数名称
accesskey_signature        //加密规则

防盗链的实现方法

location ~ .*\.(gif|jpg|png|flv|swf|rar|zip)${
	accesskey on;
	accesskey_hashmethod md5;
	accesskey_arg "key";
	accesskey_signature "mypass$remote_addr";
}
//例
location ~ .*\.(gif|jpg|png|flv|swf|rar|zip)${
	accesskey on;
	accesskey_hashmethod md5;
	accesskey_arg sign;
	accesskey_signature "jason$remote_addr";
}
//php页面代码
<?php 
$sign = md5('jason'.$_SERVER['REMOTE_ADDR']);
echo '<img src="./logo.png?sign='.$sign.'">';
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值