nginx中的盗链与防盗链

news/2024/7/6 6:32:36

1.什么是盗链?

盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告)
直接在自己的网站上向最终用户提供其它服务提供商的服务内容,骗取最终用户的浏览和点击率
受益者不提供资源或提供很少的资源,而真正的服务提供商却得不到任何的收益

2.盗链分类

网站盗链会大量消耗被盗链网站的带宽,而真正的点击率也许会很小,严重损害了被盗链网站的利益
早期的盗链一般是一些比较小的网站盗取一些有实力的大网站的地址,盗链的目标比较有针对性
现如今,一些大型的网站也已经开始把盗链的目光锁定在了整个互联网上,窃取整个互联网上的其它机器的带宽
常见的盗链有以下几种:图片盗链、音频盗链、视频盗链、文件盗链
一般被访问浏览的页面并不是一次全部传送到客户端的
如果客户请求的是一个带有许多图片和其它信息的页面,那么最先的一个HTTP 请求被传送回来的是这个页面的HTML文本
客户端浏览器对这段文本解释执行后,发现其中还有其它文件,客户端浏览器会再发送一条或者更多HTTP请求
当这些请求被处理后其它文件才被传送到客户端,然后浏览器将这些文件放到页面的正确位置
一个完整的页面要经过发送多条HTTP 请求才能够被完整地显示
基于这样的机制,盗链就成为可能,服务提供商完全可以在自己的页面中嵌入别人的链接,显示在自己的页面上,以达到盗链的目的
根据盗链的形式的不同,可以简单地把盗链分成两类:常规盗链和分布式盗
常规盗链比较初级,同时也比较常见,具有一定的针对性,只盗用某个或某些网站的链接
技术含量不高,实现也比较简单,只需要在自己的页面嵌入别人的链接即可
分布式盗链是盗链的一种新的形式,系统设计复杂,难度相对较大
这种盗链一般不针对某一个网站,互联网上任何一台机器都可能成为盗链的对象
服务提供商一般会在后台设置专门程序(Spider)在Internet上抓取有用的链接, 然后存储到自己的数据库中
而对于最终用户的每次访问,都将其转化为对已有数据库的查询,被查询到的URL 就是被盗链的对象
由于对文件的访问已经被浏览器屏蔽掉了,所以最终用户感觉不到所访问的链接是被盗取的链接

3.什么是防盗链?

WEB应用防火墙通过实现URL级别的访问控制,对客户端请求进行检测
如果发现图片、文件等资源信息的HTTP请求来自于其它网站,则阻止盗链请求,节省因盗用资源链接而消耗的带宽和性能

4.实验环境

主机信息主机的功能(服务)
server1(172.25.8.1)被盗链服务器
server2(172.25.8.2)盗链服务器
真机客户端

其实server1是真正有资源的web服务,server2上面没有资源
当客户访问server2的时候拿到的是server1的资源,点击率却是server2的,不利于server1服务器的正常使用

5.模拟盗链(server2盗取server1的资源)

  • (1)server2主机(盗链主机)上进行的操作如下:
yum install -y gd-devel cc gcc pcre-devel zlib-devel安装基本的东西
tar zxf nginx-1.17.1.tar.gz 解压
cd nginx-1.17.1/进入解压后的目录
vim auto/cc/gcc关闭debug日志 
171 # debug
172 #CFLAGS="$CFLAGS -g"
./configure --prefix=/usr/local/nginx/  --with-http_image_filter_module=dynamic --with-http_realip_module编译
make && make install安装
cd /usr/local/nginx/conf/进入nginx服务的配置目录
vim nginx.conf编辑配置文件
 35     server {
 36         listen       80;
 37         server_name  daolian.westos.org;
 38 
 39         charset utf-8;
 40 
 41         #access_log  logs/host.access.log  main;
 42 
 43         location / {
 44             root   /web;
 45             index  index.html index.htm;
 46         }	
ln -s /usr/local/nginx/sbin/nginx  /sbin做一个软链接
nginx启动nginx服务
mkdir /web建立资源目录
vim /web/index.html
daolian.westos.org
vim /etc/hosts  # 写解析
172.25.8.2 server2 daolian.westos.org
curl daolian.westos.org # 测试
daolian.westos.org
vim /web/index.html 将内容指向server1的资源
<html>
<body>
<br>盗链图片</br>
<img src="http://www.westos.org/1.jpg">
</body>
</html>
  • (2)在server1主机(被盗链主机)上进行如下操作:
cp /usr/local/nginx/html/download/vim.jpg  /web/
ls /web/
vim.jpg
  • (3)在真机上面进行测试
vim /etc/hosts
172.25.8.2  server2  daolian.westos.org

在这里插入图片描述
其实这个图片是server1的资源

6.防盗链(server1不让server2盗取它自己的资源)

  • (1)在server1上面设置
cd /bbs
ls
daolian.png  index.html
cd /usr/local/nginx/conf/
vim nginx.conf
143         location ~* \.(gif|jpg|png|jpeg)$ {
144             root /web;
145             valid_referers none blocked www.westos.org;# 原是站点访问的是www.westos.otg时,不做禁止
146             if ($invalid_referer){
147                 rewrite ^/ http://bbs.westos.org/daolian.png;
148             }
149         }
150 
151     }
152 
153     server {
154         listen 80;
155         server_name bbs.westos.org;
156                 
157         location / {
158             root /bbs;
159             index index.html;
160         }

在这里插入图片描述

nginx -s reload重新加载服务
  • (2)客户端测试:警告信息
    在这里插入图片描述

http://www.niftyadmin.cn/n/2928391.html

相关文章

nginx服务的重定向和安全加密访问https

1.重定向 (1)服务端配置 cd /usr/local/nginx/conf/切换到nginx服务器的配置目录下 vim nginx.conf 编辑配置文件 当访问域名 www.westos.org时&#xff0c;实际上访问的是 /web/index.html文件 128 server { 129 listen 80; # 监听80端口 130 server_n…

企业级高可用、高并发lnmp集群——基础知识篇(主要搞清楚lnmp架构的工作原理)

1.什么是lnmp&#xff1f; LNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写 L指Linux&#xff0c;N指Nginx&#xff0c;M一般指MySQL&#xff0c;也可以指MariaDB&#xff0c;P一般指PHP&#xff0c;也可以指Perl或Python LNMP代表的就是&#xff…

LNMP架构祥解——php、nginx、mysql源码编译的过程(也就是搭建LNMP架构的过程)

前言 本文将介绍LNMP架构中PHP、Nginx、Mysql的源码编译过程 在我们使用的Linux系统中&#xff0c;可以从yum源中获得mysql、php&#xff0c;为什么要进行如此漫长复杂的过程进行编译呢&#xff1f; 这是因为官方为我们提供的mysql、php等其功能有限&#xff0c;我们自行编译&…

利用lnmp架构搭建一个可用论坛,将php、nginx、mysql三者联系起来

php、nginx、mysql现在都配置好了&#xff0c;接下来我将以搭建论坛并且客户使用论坛为例&#xff0c;演示整个过程 lnmp架构的整个访问过程如下 用户从前端页面开始访问&#xff1a; 先到达nginx&#xff0c;由nginx判断是静态资源还是动态页面请求 如果是静态资源&#xff0…

LNMP架构之静态缓存(nginx+php+mysql+memcache)——MemCache对PHP页面的缓存加速优化

1.什么是memcache&#xff1f; memcache是一套分布式的高速缓存系统&#xff0c;由LiveJournal的Brad Fitzpatrick开发&#xff0c;但目前被许多网站使用以提升网站的访问速度 尤其对于一些大型的、需要频繁访问数据库的网站访问速度提升效果十分显著 &#xff0c;这是一套开放…

LNMP架构——OpenResty实现缓存前移(到达Nginx前端层面)

前言 我们都知道Nginx有很多的特性和好处&#xff0c;但是在Nginx上开发成了一个难题&#xff0c;Nginx模块需要用C开发&#xff0c;而且必须符合一系列复杂的规则&#xff0c;最重要的用C开发模块必须要熟悉Nginx的源代码&#xff0c;使得开发者对其望而生畏。为了开发人员方便…

在linux上面合并多个windows文件乱码的问题

在linux上面单独打开每个被合并txt文件都是正确显示的。但是cat *.txt > 1.txt 打开就是乱码。 原因是1.txt虽然是utf-8编码&#xff0c;但是显示是用latin1显示的。解决办法&#xff1a; iconv -f utf-8 -t utf-8 1.txt > 2.txt 就好了。 另外&#xff0c;文件里面如果…

LNMP架构——nginx+jsp+tomcat完成客户端的动态请求

首先&#xff0c;我先给大家画一张图&#xff0c;来理一下lnmp架构工作的整个过程 上一个实验其实我们通过php请求的是nginx服务器上的资源&#xff0c;还是静态资源 现在我们想实现动态获取&#xff0c;利用jsp动态获取tomcat服务器上面的资源 1.什么是tomcat&#xff1f; …