一、盗链
1、什么是盗链?
盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其它服务提供商的服务内容,骗取最终用户的浏览和点击率。受益者不提供资源或提供很少的资源,而真正的服务提供商却得不到任何的收益。
2、盗链分类
- 网站盗链会大量消耗被盗链网站的带宽,而真正的点击率也许会很小,严重损害了被盗链网站的利益。早期的盗链一般是一些比较小的网站盗取一些有实力的大网站的地址,盗链的目标比较有针对性,现如今,一些大型的网站也已经开始把盗链的目光锁定在了整个互联网上,窃取整个互联网上的其它机器的带宽。常见的盗链有以下几种:图片盗链、音频盗链、视频盗链、文件盗链。
- 一般要被浏览的页面并不是一次全部传送到客户端的。如果客户请求的是一个带有许多图片和其它信息的页面,那么最先的一个HTTP 请求被传送回来的是这个页面的HTML文本,客户端浏览器对这段文本解释执行后,发现其中还有其它文件,客户端浏览器会再发送一条或者更多HTTP请求,当这些请求被处理后其它文件才被传送到客户端,然后浏览器将这些文件放到页面的正确位置。一个完整的页面要经过发送多条HTTP 请求才能够被完整地显示。基于这样的机制,盗链就成为可能,服务提供商完全可以在自己的页面中嵌入别人的链接,显示在自己的页面上,以达到盗链的目的。
- 根据盗链的形式的不同,可以简单地把盗链分成两类:常规盗链和分布式盗链:
常规盗链比较初级,同时也比较常见,具有一定的针对性,只盗用某个或某些网站的链接。技术含量不高,实现也比较简单,只需要在自己的页面嵌入别人的链接即可。
分布式盗链是盗链的一种新的形式,系统设计复杂,难度相对较大。这种盗链一般不针对某一个网站,互联网上任何一台机器都可能成为盗链的对象。服务提供商一般会在后台设置专门程序(Spider)在Internet上抓取有用的链接, 然后存储到自己的数据库中。而对于最终用户的每次访问,都将其转化为对已有数据库的查询,被查询到的URL 就是被盗链的对象。由于对文件的访问已经被浏览器屏蔽掉了,所以最终用户感觉不到所访问的链接是被盗取的链接。
3、什么是防盗链?
WEB应用防火墙通过实现URL级别的访问控制,对客户端请求进行检测:如果发现图片、文件等资源信息的HTTP请求来自于其它网站,则阻止盗链请求。这样可以节省因盗用资源链接而消耗的带宽和性能。
二、模拟盗链
server2窃取server1的资源:
- 修改配置文件在server1中添加一个虚拟web:
vim /usr/local/nginx/conf/nginx.conf
##写入
server {
listen 80;
server_name www.yang.org;
location / {
root /web;
index index.html;
}
}
nginx -t
nginx -s reload
- 添加资源
[root@server1 nginx]# ll web/
total 464
-rw-r--r-- 1 root root 469511 Feb 27 15:46 a.jpg
-rw-r--r-- 1 root root 27 Feb 27 12:05 index.html
- 修改配置文件在server2中添加虚拟web并写入盗链规则:
vim /usr/local/nginx/conf/nginx.conf
##写入
server {
listen 80;
server_name daolian.yang.org;
charset utf-8; #不加这个参数网页上看到的汉字是乱码
location / {
root /web;
index index.html;
}
}
- 配置server2网页
mkdir /web
vim /web/index.html
##写入
<html>
<body>
<br>盗链图片</br>
<img src="http://www.yang.org/a.jpg">
</body>
</html>
- 在server2中添加解析:
vim /etc/hosts
##写入
172.25.254.51 server1 www.yang.org
nginx -t
nginx -s reload
- 在真机中添加解析:
vim /etc/hosts
##写入
172.25.254.52 server2 daolian.yang.org
- 测试:
访问http://daolian.yang.org/
可以看到a.jpg
这张图片
三、防盗链设置
1、使盗链图片无法显示
- 在serve1中修改配置文件,写入防盗链规则:
vim /usr/local/nginx/conf/nginx.conf
##写入
location ~* \.(gif|jpg|png|jpeg)$ {
root /web;
valid_referers none blocked www.yang.org;
if ($invalid_referer) {
return 403;
}
}
nginx -t
nginx -s reload
- 测试:
访问http://daolian.yang.org/
无法显示a.jpg
图片
2、防盗链时重定向到指定链接
- 在
/bbs
下放一张图片daolian.jpg
(提示禁止盗链,或者标明自己网站的地址等) - 修改配置文件:
vim /usr/local/nginx/conf/nginx.conf
##写入
location ~* \.(gif|jpg|png|jpeg)$ {
root /web;
valid_referers none blocked www.yang.org;
if ($invalid_referer) {
rewrite ^/(.*)$ http://bbs.yang.org/daolian.jpg; #将原网页重定向到http://bbs.yang.org/daolian.jpg
}
}
}
server {
listen 80;
server_name bbs.yang.org;
location / {
root /bbs;
index index.html;
}
}
nginx -t
nginx -s reload
- 测试:
访问http://daolian.yang.org/
,显示的图片是daolian.jpg