防盗链的原理以及实现

防盗链的原理以及实现

盗链的概念盗链是指在自己的页面上展示一些并不在自己服务器上的一些内容

获取别人的资源地址,绕过别人的资源展示页面,直接在自己的页面上向最终用户提供此内容

一般被盗链的都是 图片 音乐 视频 软件等资源

通过盗链的手段可以减轻自己服务器的负担

防盗链的工作原理通过Refer或者签名,网站可以检测目标网页访问的来源网页,如果是资源文件,则可以追踪到显示他的网页地址

一旦检测到来源不是本站,即进行阻止或者返回指定的页面

防盗链的实现方法Nginx模块,ngx_http_referer_module用于阻挡来源非法域名的请求

nginx指令valid_refers,全局变量$invalid_refer

对资源的防盗链nginx配置为

代码语言:javascript复制location ~.*\.(gif|jpg|png|flv|swf|rar|zip)$

{

valid_referers none blocked test.com *.test.com; //加none的目的是确保浏览器可以直接访问资源

if($invalid_referer)

{

#return 403; // 直接返回403

rewrite ^/ http://www.test.com/403.jpg;//返回指定提示图片

}

}对目录的防盗链nginx配置为

代码语言:javascript复制location /images/

{

valid_referers none blocked test.com *.test.com;

if($invalid_referer)

{

#return 403;

rewrite ^/ http://www.test.com/403.jpg;

}但是传统的防盗链也会存在一些问题,因为refer是可以伪造的

所以可以使用加密签名的方式来解决这个问题

什么是加密签名?就是当我们请求一个图片的时候,woya我要给他带一些签名过去,然后返回图片的时候我们判断下签名是否正确,相当于对一个暗号。

可以使用第三方模块HttpAccessKeyModule来解决防盗链的问题,我们需要去安装

安装好有这样一个指令:

accesskey on|off 模块开关

accesskey_hashmethod md5 | sha-1 签名加密方式

accesskey_arg GET参数名称

accesskey_signature 加密规则

代码语言:javascript复制location ~.*\.(gif|jpg|png|flv|swf|rar|zip)$

{

accesskey on;

accesskey_hashmethod md5;

accesskey_arg sign;

accesskey_signature "mypass$remote_addr";

}意思是mypass加客户端ip通过md5加密

图片文件代码:

代码语言:javascript复制

$sign = md5('mypass' . $_SERVER['REMOTE_ADDR']);

echo '';

?>以上就是防盗链的两种形式,欢迎伙伴们进行ta讨论留言。

相关推荐

4月23日國際兔猻日,兔猻是什麼動物?猻注音怎麼念?訂在這一天由來為什麼?
雷霆崖扫荡者位置
beat365中国

雷霆崖扫荡者位置

📅 07-29 👁️ 8474
大话致命和狂暴区别?(大话西游致命和狂暴有什么区别)
沈阳为世界杯功臣塑造铜像 造价估计高达300万
365bet苹果版

沈阳为世界杯功臣塑造铜像 造价估计高达300万

📅 09-23 👁️ 5221
《原神》勇士的每一面图文攻略
365外网足球

《原神》勇士的每一面图文攻略

📅 07-31 👁️ 2797
2025年手机翻墙教程:新手也能快速掌握的科学上网指南
20至30岁大陆女演员
365bet苹果版

20至30岁大陆女演员

📅 10-04 👁️ 8707
dnf免做卡怎么使用
beat365中国

dnf免做卡怎么使用

📅 10-26 👁️ 1259
手机进销存记录方法详解,怎样高效管理库存?
365外网足球

手机进销存记录方法详解,怎样高效管理库存?

📅 10-02 👁️ 7451