博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
高并发大流量专题---2、流量优化(防盗链处理)
阅读量:4466 次
发布时间:2019-06-08

本文共 2593 字,大约阅读时间需要 8 分钟。

高并发大流量专题---2、流量优化(防盗链处理)

一、总结

一句话总结:

其实把原理用清楚了,剩下就是用点脑子,比如别人Referer防盗链如何解决

 

1、盗链概念及相关?

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

 

2、防盗链概念?

防盗链:防止别人通过一些技术手段绕过本站的资源展示页面,盗用本站的资源,让绕开本站资源展示页面的资源链接失效

 

3、防盗链的工作原理?

访问网站来源和nginx中我们的配置做对比:通过Referer或者签名,网站可以检测目标网页访问的来源网页,如果是资源文件,则可以跟踪到显示它的网页地址。一旦检测到来源不是本站即进行阻止或者返回指定的页面

 

4、防盗链常用的两种方法?

检测Referer
资源签名检测

 

5、如何查看请求的来源网站?

chrome->f12->network->Headers->Request Headers:比如 Referer: https://www.cnblogs.com/

Request Headers

Provisional headers are shown
Referer: https://www.cnblogs.com/
User-Agent: Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Mobile Safari/537.36

 

6、防盗链Referer实现方法 的注意点?

|||-begin

Nginx 模块ngx_http_referer_module 用于阻挡来源非法的域名请求Nginx指令valid_referers,全局变量$invalid_referervalid_referers none | blocked | server names | string..…   location ~* \.(jpg|png|gif|jpeg)$ {      valid_referers none blocked www.baidu.org *.baidu.org; #有效referers      if ($invalid_referer) { #无效referer怎么办          rewrite ^/ http://www.baidu.org/403.html; # 如果有盗链的情况就使用url重写到错误页面或者错误图片      }  }

|||-end

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

 

 

7、网站使用referer方式防止盗链,如何破解?

伪造Referer:伪造成google,百度,或者就是当前网站的referer即可解决

 

8、用户使用 伪造Referer 方式来破解 referer方式防盗链, 如何防,及这种方法优缺点?

可以使用加密签名解决
加密签名缺点:麻烦:每个资源请求都需要加上签名验证字段:echo '<img src="./1ogo_new.png?sign='.$sign.'">';
使用第三方模块HttpAccesskeyModule实现Nginx防盗链accesskey onloff 模块开关accesskey_hashmethod md5 | sha-1签名加密方式accesskey_arg GET参数名称accesskey_signature 加密规则nginx中配置location ~* \.(jpg|png|gif|jpeg)$ {    accesskey on; #开启accesskey    accesskey_hashmethod md5; #使用md5加密    accesskey_arg sign; #资源要带的字段    accesskey_signature "jason$remote_addr"; #使用md5加密的字段}表示jason字符串加客户端ip$remote_addr,然后一起md5加密php端代码$sign=md5('jason'.$_SERVERI' REMOTE_ADDR']); echo '';

 

 

9、使用如何加密签名解决防止盗链的原理是什么?

|||-begin

使用第三方模块HttpAccesskeyModule实现Nginx防盗链accesskey onloff 模块开关accesskey_hashmethod md5 | sha-1签名加密方式accesskey_arg GET参数名称accesskey_signature 加密规则nginx中配置location ~* \.(jpg|png|gif|jpeg)$ {    accesskey on; #开启accesskey    accesskey_hashmethod md5; #使用md5加密    accesskey_arg sign; #资源要带的字段    accesskey_signature "jason$remote_addr"; #使用md5加密的字段}表示jason字符串加客户端ip$remote_addr,然后一起md5加密php端代码$sign=md5('jason'.$_SERVERI' REMOTE_ADDR']); echo '';

|||-end

php端生成的sign字段和nginx端生成的sign字段做对比,如果相同就允许访问,否则不允许

 

 

 

二、内容在总结中

 

 

 

 

转载于:https://www.cnblogs.com/Renyi-Fan/p/11046169.html

你可能感兴趣的文章
学术网站
查看>>
trap-接收信号_采取行动
查看>>
struts2.0中struts.xml配置文件详解
查看>>
基于深度摄像头的障碍物检测(realsense+opencv)
查看>>
面向对象-继承
查看>>
洛咕 P3700 [CQOI2017]小Q的表格
查看>>
Linux make nginx 的时候报错
查看>>
web roadmap
查看>>
数据结构29:广义表的长度和深度
查看>>
多条数据聚合sql
查看>>
JQuery(一)
查看>>
Sybase脚本移植到DB2中
查看>>
java学习之super、final、static关键字及匿名对象
查看>>
【Windows Phone 8】触发器
查看>>
17、在vue中引用移动端框架Vux:
查看>>
Chapter 9:Dielectrics
查看>>
Murphy's law
查看>>
app实现状态保持
查看>>
JavaScript设计模式(4)-桥接模式
查看>>
java实例_出错处理 [超过1000&除数为零]
查看>>