11-27 243 views
一、盗链原理
盗链是一种损害原有网站合法利益,给原网站所在服务器造成额外负担的非法行为。要采取防盗链的措施,首先需要了解盗链的实现原理。 客户端向服务器请求资源时,为了减少网络带宽,提高响应时间,服务器一般不会一次将所有资源完整地传回给客户端。比如在请求一个网页时,首先会传回该网页的文本内容,当客户端浏览器在解析文本的过程中发现有图片存在时,会再次向服务器发起对该图片资源的请求,服务器将存储的图片资源再发送给客户端。在这个过程中,如果该服务器上只包含了网页的文本内容,并没有存储相关的图片资源,而是将图片资源链接到其他站点的服务器上去了,这就形成了盗链行为。
二、盗链演示
实验环境:2台安装好nginx服务的机器。
a机器 盗链机器 192.168.0.241
b机器 被盗链机器 192.168.0.242
先在a、b机器装好nginx
a机器nginx 配置
# cat ycy.conf
server {
listen 80;
server_name 192.168.0.242;
location ~.*\.(jpg|jepg|gif|css|png|ico)?$ {
root /data/ycy/nginx/;
expires 30d;
break;
}
location / {
root /data/ycy/nginx;
index index.html;
}
}
在/data/ycy/nginx创建一个html 页面,导入一个b机器的图片地址。
cd /data/ycy/nginx
echo “<img src = “http://192.168.0.242/images/test.jpg”>
” > index.html
检查配置是否正常,并重载Nginx
nginx -t && nginx -s reload
b 机器nginx 配置 (b机器是一个图片资源网站)
# cat /etc/nginx/conf.d/ycy.conf
server {
listen 80;
server_name 192.168.0.242;
location ~.*\.(jpg|jepg|gif|css|png|ico)?$ {
root /data/ycy/nginx/;
expires 30d;
break;
}
}
cd /data/ycy/nginx
mkdir images
echo “<img src = “/data/ycy/nginx/images/test.jpg”>” > index.html
拷贝一个图片文件名为test.jpg的到images目录下
systemctl restart nginx 重启
直接访问下b机器的网站,看看能否看到测试图片
a网站访问详情
可以看到图片属于242机器上的资源,客户端用浏览器访问192.168.0.241,返回的是192.168.0.242上的图片资源 ,盗链成功!
可以看到Referer的头域的值来自192.168.0.241
三、防盗链演示
根据文件类型实现防盗链的配置实例
修改b服务器上的nginx配置文件
server {
listen 80;
server_name 192.168.0.242;
root /data/ycy/nginx;
location ~*\.(jpg|jepg|gif|css|png|ico)$ {
valid_referers none 192.168.0.242;
if ($invalid_referer) {
rewrite ^/ http://192.168.0.242/images/stop.jpg;
}
}
}
server {
listen 80;
server_name 192.168.0.242;
root /data/ycy/nginx;
}
在a机器上访问你会发现是访问不到b机器上的图片资源了。。 而b机器可以正常访问自己的资源。。
参考地址https://blog.51cto.com/beckoning/1873607
版权属于: 抓不住的疯
原文地址: https://www.ycy114.com/index.php/2020/11/27/nginx-%e9%98%b2%e7%9b%97%e9%93%be/
转载时必须以链接形式注明原始出处及本声明。