1、什么是资源盗链
简单的说,就是某些不法的网站,通过在其自身网站程序里未经过许可非法调用其他网站的资源,然后在自己的网站上显示这些调用的资源,达到了填充自身网站显示的效果,但是浪费了调用资源网站的网络流量,造成其他网站的带宽及服务压力吃紧,甚至宕机。
2、模拟盗链与防盗链
实验环境:本地apache
php版本:php5.5.38
先在本地建立两个模拟站点,一个资源模拟站点(test1.com),一个盗链站点(test2.com),两个站点情况如下:
防盗链处理前,从下面的Referer中可以发现,模拟资源站点和模拟盗链站点都可以正常请求资源站点的资源。
.htaccess防盗链处理
RewriteEngine On RewriteCond %{HTTP_REFERER} !test1.com [NC] RewriteRule .*.(html)$ http://test1.com/error.txt [R,NC,L]
RewriteCond %{HTTP_REFERER} !test1.com [NC] 这一行表示请求来源不是test1.com这个站点。
RewriteRule .*.(html)$ http://test1.com/error.txt [R,NC,L]这一句表示,请求的html页面来源不是test1.com将跳转到http://test1.com/error.txt这个页面。
这里为了模拟方便用的是html页面防盗链,其他文件防盗链只需将(html)里的html换成文件后缀即可,多种文件防盗链用"|"隔开,如(zip|png|gif);
下图是通过.htaccess防盗链处理后,再次请求的情况,从图中可以明显的看出,防盗链处理后,无法通过站外访问站内资源,通过站外盗链访问站内资源时会自动转向我们设定的盗链提示页面,但依然可以通过站内访问站内资源。
盗链与防盗链的实现原理大致是这样的,在后面的文章中心月IT技术博客会继续分享防盗链的其他方法。
3、为什么会出现盗链
一般浏览一个页面并不是一次全部传送到客户端的,而是最先的一个http请求被传送回来的是这个页面的文本,然后通过客户端的浏览器对这段文本的解释执行,发现还有图片,那么客户端的浏览器会再发送一条http请求,当这个请求被处理后那么这个图片文件会被传送至客户端,然后浏览器会将图片安放到页面的正确位置,这样一个完整的页面经过发送多条http请求才被完整的显示。从上面的模拟实验中在做防盗链前,虽然两个测试站点都能正常请求访问downloadfile1,但二者的请求来源却不一样,正是基于这样的机制,所以就产生了盗链问题。盗链不仅损害了原网站的合法利益,还加重了服务器的负担,同时也还会影响网站数据的统计,尤其对统计数据有严格要求的网站。
4、盗链的大致分类
最多的是两类盗链,图片盗链(gif、.jpg、.png等)和文件盗链(各种下载文件)。被一个访问量极大的网站盗用,会消耗不少的带宽。其他盗链包括:音频盗链、视频盗链。
5、盗链的防范
本文中的模拟防盗链中防盗链方法只是针对虚拟主机的简单防盗链,后面会心月IT博客会分享更多其他的防盗链方法。