阿里云 OSS 如何设置防盗链, 上个月图床流量耗费50G+,请求次数10W+,什么鬼?

欢迎关注个人微信公众号: 小哈学Java, 文末分享阿里 P8 高级架构师吐血总结的 《Java 核心知识整理&面试.pdf》资源链接!!

个人网站: https://www.exception.site/essay/how-to-set-aliyun-oss-http-referer

目录

一、背景

二、背后有啥猫腻

三、什么是盗链?

四、为什么会被盗链?

五、OSS 设置防盗链

六、验证一下效果

七、另外一些应对手段

一、背景

小哈前天陆续接到三个电话,但都因为忙于工作、下雨天等各种因素导致没接上,电话均来自杭州,心理一想,估计是阿里云的客服吧,因为之前也会偶尔接到他们的电话,比如回访之类的。

感觉应该也不是什么要紧的事儿。直到晚上,躺在床上休息的时候,无意翻动手机,鬼使神差的,我点开了短信查看。

PS: 小哈平常不怎么主动去翻短信,短信上常年数字 1000+,主要里面内容基本上是一些验证码啊、垃圾短信啊啥的,也懒得去清理。

无意间看到下面这条短信:

打了一个激灵,事情并不简单,如果还不及时续费,网站图片(小哈网站图片均存储在阿里云 OSS 对象存储上)都将无法访问!

吓得我赶紧又续费了 50 块钱!

二、背后有啥猫腻

暂时解决了 OSS 快到期的问题后,我开始回想整个事情的经过。OSS 当时开通的是按时付费的,因为使用的比较少,选择按时付费要更划算一些。

但是这一个月来,小哈写博客频率高了一些,另一方面,也为了公众号文章能有个良好的阅读体验,也是能用图片展示的,就尽量少上一行代码。

但是小哈的个站,每天的访问量只有可怜的几十个IP, 但是 OSS 后台的统计是下面这个鬼样子的:

存储用量暂且不说,外网流出流量 50G+,图片读请求 10w+, 什么鬼啊!这个数据对于每天访问几十个IP的个站,绝对是不正常的!

由于是按小时付费,峰值的时候,每小时就耗费5块大洋,这谁顶得住啊,账户上就那点钱,不欠费才怪呢!

问题原因,小哈首先想到的是图片被盗链了!

三、什么是盗链?

以下来自百度百科官方解释:

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

通俗来说,就是存储在小哈图片服务器上图片,在未经过授权的情况下,被别人擅自使用了。

四、为什么会被盗链?

有一些类似于下图中爬虫网站,每天大批量的爬取文章,凭着自己网站权重高,即使不是原创,也能在百度中排名靠前,赚取广告费啥的,这里不得不吐槽一下百度。

好了,回归正题,这些爬虫网站没有自己的图片服务器(因为要钱),而是直接引用的原文的图片链接:

最终,这些图片的请求流量,全都由图片的所有者来买单。

五、OSS 设置防盗链

OSS 是按使用量收费的服务,为了减少存储于 OSS 的数据被其他人盗链而产生额外费用,OSS本身是支持设置Referer,基于 HTTP 和 HTTPS header 中表头字段Referer 的防盗链方法。

我们可以通过控制台为自己的存储空间设置 Referer 字段的白名单、以及是否允许 Referer 字段为空的请求访问。

接下来,进入阿里云控制台,设置 OSS 白名单,这里我设置为自己的网站域名 www.exception.site, 也就是说 header 请求头中, Referer 为 www.exception.site 的网站,才能被够允许访问,否则直接拒绝:

  • :选择需要设置防盗链的 Bucket;
  • :设置防盗链 HTTP Referer 白名单;
  • :保存;

六、验证一下效果

6.1 Referer 为空测试

通过 curl 命令来访问一下 bucket 中的某张图片,此时 header 头中的 Referer 属性值为空,看下是否能够正常访问:

可以看到请求失败 AccessDenied.

6.2 Referer 一个不在白名单的域名测试

通过 -e 参数传递一个未设置在白名单中的地址,看能够访问成功:

依然不能够访问成功,测试正常!

再来验证下上面说的盗链网站是否还能够正常访问,首先我们清空浏览器缓存:

Nice!图片已经打不开了。

6.3 存在于白名单中的域名测试

这里小哈直接访问自己的网站来验证效果:

图片请求 header 头的 Referer 属性值与设置的一致,个人网站图片均能够正常访问。

七、另外一些应对手段

除了防盗链的设置,目前来看按小时付费套餐已经不太合适了,在阿里云上购买一个下行流量包,半年6个月,每个月50G流量,价格60块大洋,当然了,超出的得另算。

如果说未来流量继续增大的话,那就要考虑带过期时间的图片访问、CDN, 以及购买回源流量包了,那就是后话了,有机会小哈再给大家分享。下期见!

Ref

免费分享 | 面试&学习福利资源

最近在网上发现一个不错的 PDF 资源《Java 核心知识&面试.pdf》分享给大家,不光是面试,学习,你都值得拥有!!!

获取方式: 关注公众号: 小哈学Java, 后台回复资源,既可免费无套路获取资源链接,下面是目录以及部分截图:

重要的事情说两遍,关注公众号: 小哈学Java, 后台回复资源,既可免费无套路获取资源链接 !!!

欢迎关注微信公众号: 小哈学Java

原文地址:https://www.cnblogs.com/quanxiaoha/p/10886592.html

时间: 2024-08-05 19:17:47

阿里云 OSS 如何设置防盗链, 上个月图床流量耗费50G+,请求次数10W+,什么鬼?的相关文章

阿里云OSS如何设置防盗链?

OSS是按使用量收费的服务,为了减少您存储于OSS的数据被其他人盗链而产生额外费用,OSS支持设置Referer基于HTTP和HTTPS header中表头字段Referer 的防盗链方法.您可以通过控制台为您的存储空间设置Referer字段的白名单和是否允许Referer字段为空的请求访问. 操作步骤 进入OSS管理控制台界面. 在左侧存储空间列表中,单击目标存储空间名称,打开该存储空间概览页面. 单击基础设置页签,找到防盗链区域. 单击设置,进行以下设置: 在Referer框中,添加白名单网

阿里云oss的referer防盗链问题

之前直接是拿阿里云返回的链接作为访问图片链接,后面加了防盗链. 后台刚好生成图片的时候需要图片文件,就得通过oss的工具包进行解析. z 原文地址:https://www.cnblogs.com/xiao1993/p/12024888.html

在OneThink(ThinkPHP3.2.3)中整合阿里云OSS的PHP-SDK2.0.4,实现Web端直传,服务端签名直传并设置上传回调的实现流程

在OneThink(ThinkPHP3.2.3)中整合阿里云OSS的PHP-SDK2.0.4,实现本地文件上传流程 by shuijingwan · 2016/01/13 1.SDK安装 github地址:https://github.com/aliyun/aliyun-oss-php-sdk 2.复制aliyun-oss-php-sdk-master\src\OSS至passport.hmwis.com\ThinkPHP\Library\Vendor\OSS,如图1.2 复制aliyun-os

thinkphp集成系列之阿里云oss

web2.0时代:除了纯信息展示类的网站:基本都是有文件上传功能的: 最不济你得让用户换个头像吧:但是随着业务的发展: 如果上传的文件都和网站程序源代码放在一起:那是有相当多的弊端的: 1:静态文件会占用大量带宽: 2:服务器的成本略高: 常规的做法是把php源代码放到一台服务器上:图片等静态文件放在另一台服务器上: 当一个神奇的“云”时代的到来后:一切就变的更加简单了: 在业务还比较小的时候:我们无需大费周折的去搞一台静态文件服务器:直接使用第三方的即可: 好了:洛里啰嗦了半天:下面请出本篇博

用DzzOffice管理阿里云OSS

在DzzOffice分两种方式管理阿里云OSS 1.把阿里云oss作为多人或企业的共享网盘使用. 2.接入个人的阿里云oss管理,可同时管理多个bucket,多个bucket之间可以互传文件. 下面先介绍第一种方式,OSS多人用作网盘使用. 首先打开DzzOffice开始菜单,在应用列表中打开”云设置和管理“应用 打开后界面如下 先确保要使用的OSS是可用状态 然后点击“企业盘” 这里的企业盘名称是可以修改的,根据自己想起的名字. 我在企业中用,我把它改成我们企业的名称“乐云网盘”一会在网盘管理

发布阿里云OSS for phpcmsV9整合教程

说明:这个算不上是插件,因为没有安装包,需要手工修改代码. 还有一点就是后台发布文章时上传的附件还是会保存在你的服务器上,基于以下原因: 1.个人的需求是前台页面需要使用thumb函数生成多个缩略图大小,thumb函数是不支持远程图片的(保存在OSS上就变远程图片了),即使修改为支持远程图片,也需要将远程图片先保存到本地,这样速度会非常慢,是非常非常: 2.做备份的需要,这点你懂得,某天OSS上的附件没有了就悲剧了,所以使用这个OSS for phpcmsV9需要服务器有一定的空间. 下面是整合

iOS使用阿里云OSS对象存储 (SDK 2.1.1)

最近项目中用到了阿里云OSS对象存储,用来存储APP中图片.音频等一些数据.但坑爹的阿里云居然在11月20日将SDK版本更新到了2.1.1,然而网上给出的教程都是1.*版本的(针对iOS),两个版本所调用的方法差别较大(自我感觉),当然原理都一样.所以看了两天SDK,自己封装了几个常用的方法. 一.OSS简单介绍 OSS是提供非结构化数据存取的服务,非结构化数据一般包括图片.文档.音频.视频等一些文件.OSS提供了接口,开发者可以通过这些接口对数据进行上传或下载等操作. 开通OSS服务后,创建一

阿里云 OSS

原文:https://help.aliyun.com/ 阿里云 OSS 阿里云 OSS(Object Storage Service)为您提供基于网络的数据存取服务.使用 OSS,您可以通过网络随时存储和调用包括文本.图片.音频和视频等在内的各种结构化或非结构化数据文件. 在使用阿里云 OSS 之前,您需要了解 OSS 的几个基本概念.阿里云 OSS 将数据文件以对象(object)的形式上传到存储空间(bucket)中. 您可以创建一个或者多个存储空间,然后向每个存储空间中添加一个或多个文件.

angulaijs中的ng-upload-file与阿里云oss服务的结合,实现在浏览器端上传文件到阿里云(速度可以达到1.5M)

angularjs结合aliyun浏览器端oos文件上传加临时身份验证例子 在服务端获取sts 源码: public class StsServiceSample { // 目前只有"cn-hangzhou"这个region可用, 不要使用填写其他region的值 //<setting name="accessKeyId" value="H6JSh0Y****z2cGa" /> //<setting name="ecr