1、防盗链其实就是采用服务器端编程,通过url过滤技术实现的防止盗链的软件。此内容不在自己服务器上,而通过技术手段,绕过别人放广告有利益的最终页,直接在自己的有广告有利益的页面上向最终用户提供此内容。
2、作用:可以防止盗窃活动和暴力袭击。
防盗链的实现方法:
1、如果想对自己的网站进行防盗链保护,则需要针对不同的情况进行区别对待。如果网站服务器用的是apache,那么使用apache自带的Url Rewrite功能可以很轻松地防止各种盗链,其原理是检查refer,如果refer的信息来自其他网站则重定向到指定图片或网页上。
2、如果服务器使用的是IIS的话,则需要通过第三方插件来实现防盗链功能了,现在比较常用的一款产品叫做ISAPI_Rewrite,可以实现类似于apache的防盗链功能。另外对于论坛来说还可以使用“登录验证”的方法进行防盗链。
通常我们不希望自己网站的图片、文件等被一些未经允许的网站应用,那么我们可以在nginx里做一些配置来阻止这些网站的访问。
我们将使用nginx的valid_referers 指令来做防盗链,下面来简单介绍下valid_referers指令。
语法:
valid_referers [none|blocked|server_names] ...
默认值:none
使用环境:server,location
该指令会根据Referer Header头的内容分配一个值为0或1给变量 $invalid_referer 。如果Referer Header头不符合valid_referers指令设置的有效Referer,变量$invalid_referer将被设置为1.
该指令的参数可以为下面的内容:
none:表示无Referer值的情况。
blocked:表示Referer值被防火墙进行伪装。
server_names:表示一个或多个主机名称。从Nginx 0.5.33版本开始,server_names中可以使用通配符"*"号。
简单介绍完后小伙伴们可能会想为啥要用这个参数做防盗链呢?
我们知道HTTP Referer是Header的一部分,当浏览器向Web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器借此可以获得一些信息用于处理。下面我们在浏览器里面打开几个页面来体验下这个参数
下面我们准备一张图片test.jpg,和两台服务器,注意笔者的nginx版本是1.17的,不同的版本可能配置稍微有点不同。
服务器A:47.93.121.3
服务器B:175.24.110.203
笔者将图片test.php 放到服务器A上,并能够正常访问
接着我们在服务器B上写一个test.htm来引用这张图片:
访问看下:
能够正常访问。
但是我们希望服务器B在没有经过允许的情况下不能访问这张图片,那我们就需要配置下服务器A的nginx
那我们再在服务器B上看还能不能访问到这张图片:
发现已经不能访问这张图片,那我们再看看服务器A能不能访问:
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)