您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
9-2 web资源防盗链(基于referer)
发布时间:2020-10-08 20:53:41编辑:雪饮阅读()
基于Referer的防盗链
这里以http://www.gaojiupan.cn/做为基础站点(被别人引用的站点)
首先看我们来看一个正常的图片用http://www.gaojiupan.cn/来访问
这是没有问题的,那么现在假定我本地计算机上面的localhost上面引用该图片地址
<!DOCTYPE html>
<html>
<body>
<img src="http://www.gaojiupan.cn/skin/default/yanqing/images/banner_top.jpg"/>
</body>
</html>
那么也是没有问题的
此时在我gaojiupan.cn这个站点的nginx配置中添加代码如:
valid_referers none blocked 47.240.19.5;
if ($invalid_referer){
return 403;
}
然后刷新我本地的localhost会发现我本地localhost引用的图片已经挂了
那么我刷新我gaojiupan.cn这个图片仍然存在
解析:
上面添加规则中指定的ip地址就是我的gaojiupan.cn所在的服务器ip地址
而上面规则中的none意思是referer为空,因为为空就是直接访问gaojiupan.cn而不引用时候是空比如直接访问链接:http://www.gaojiupan.cn/skin/default/yanqing/images/banner_top.jpg
而上面规则中的blocked则指的是防火墙及代理删除了来访refer时候也可以允许盗链
盗链重定向:
现在我们放行刚才的盗链限制,然后我本地的localhost又恢复了
那么我此时修改下盗链处理方式:
valid_referers none blocked 47.240.19.5;
if ($invalid_referer){
rewrite ^/ https://www.baidu.com/img/dong_30a61f45c8d4634ca14da8829046271f.gif;
}
然后再次看看直接访问
http://www.gaojiupan.cn/skin/default/yanqing/images/banner_top.jpg
发现是正常访问
然后再次刷新下localhost发现图片跳转到百度的一个图片地址了
解析:
上面修改了盗链处理方式为跳转到一个百度的图片地址
注意:
以上实践我在我自己虚拟机中用rpm安装的nginx以及自己在宿主机中host文件中解析了3个域名指定到虚拟机中这个nginx中对应3个站点,如:
192.168.108.128 www.website1.com
192.168.108.128 www.website2.com
192.168.108.128 www.website3.com
然后以虚拟机中的这个www.website1.com为被引用的站点进行测试
最后发现是有点问题的,或许是我自己问题,或许还有其它因素。另外就是我线上的nginx是1.16的,我本地的是1.18的,不知道是否与这个有关。
而上面我的实践则是在我实际的阿里云服务器上面实践的。
关键字词:nginx,防盗链,referer