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


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


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


防盗链的实现方法
Referer
Nginx 模块 ngx_http_referer_module 用于阻挡来源非法的域名请求
Nginx 指令 valid_referers,全局变量 $invalid_referer
valid_referers none | blocked | server_names | string ...;

默认值:none
使用环境:server,location
该指令会根据Referer Header头的内容分配一个值为0或1给变量 $invalid_referer。
如果Referer Header头不符合valid_referers指令设置的有效Referer,变量$invalid_referer 将被设置为1.

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

server_names: "Referer" 来源头部包含当前的 server_names

例子:

 

 

 

 传统防盗链遇到的问题:

伪造Referer

 

加密签名
使用第三方模块 HttpAccessKeyModule 实现 Nginx 防盗链

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

例子:

 

 资源访问时加上参数?accesskey_arg=accesskey_signature 


————————————————
版权声明:本文为CSDN博主「curioust」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/curioust/article/details/83099095

posted on 2020-05-08 19:16  ksy_c  阅读(344)  评论(0)    收藏  举报