阿里云金牌合作伙伴-授权证书 长期稳定·永久朋友 产品专家1对1服务
阿里云购买咨询热线:158-0160-3153 凯铧互联客服

热门文章

阿里云常见售后问题集锦

存储在阿里云OSS上的文件,如何设置防盗链功能

发布:凯铧互联

凯铧互联小编本文讲解的是存储在阿里云OSS上的文件,如何设置防盗链功能。如果您还有阿里云其他技术问题可以直接咨询本站客服,专业技术人员会为您提供7x24技术服务。

OSS是按使用量收费的服务,为了防止用户在OSS上的数据被其他人盗链,OSS支持基于HTTP header中表头字段referer的防盗链方法。用户可以通过OSS管理控制台或者API的方式对一个Bucket设置referer字段的白名单和是否允许referer字段为空的请求访问。

例如,对于一个名为mydata的bucket,设置其referer白名单不允许为空且refer设置允许http://www.aliyun.com,则所有referer为http://www.aliyun.com的请求才能访问mydata这个bucket中的Object。

一、细节分析

用户只有通过URL签名或者匿名访问Object时,才会做防盗链验证。请求的Header中有“Authorization”字段的,不会做防盗链验证。
一个Bucket可以支持多个referer参数。通过控制台设置时通过回车作为换行符分隔,通过API设置时通过逗号“,”分隔。
Referer参数支持通配符“*”和“?”。
用户可以设置是否允许referer字段为空的请求访问。
白名单为空时,不会检查referer字段是否为空(不然所有的请求都会被拒绝)。
白名单不为空,且设置了不允许referer字段为空的规则;则只有referer属于白名单的请求被允许,其他请求(包括referer为空的请求)会被拒绝。
如果白名单不为空,但设置了允许referer字段为空的规则;则referer为空的请求和符合白名单的请求会被允许;其他请求都会被拒绝。
Bucket的三种权限(private,public-read,public-read-write)都会检查referer字段。
通配符详解

星号“*”:可以使用星号代替0个或多个字符。如果正在查找以AEW开头的一个文件,但不记得文件名其余部分,可以输入AEW*,查找以AEW开头的所有文件类型的文件,如AEWT.txt、AEWU.EXE、AEWI.dll等。要缩小范围可以输入AEW*.txt,查找以AEW开头的所有文件类型并以.txt为扩展名的文件如AEWIP.txt、AEWDF.txt。
问号“?”:可以使用问号代替一个字符。如果输入love?,查找以love开头的一个字符结尾文件类型的文件,如lovey、lovei等。要缩小范围可以输入love?.doc,查找以love开头的一个字符结尾文件类型并以.doc为扩展名的文件如lovey.doc、loveh.doc。

二、OSS管理控制台开启防盗链功能操作步骤

进入 OSS 管理控制台 界面。
在左侧存储空间列表中,单击目标存储空间名称,打开该存储空间概览页面。
单击 基础设置 页签,找到 防盗链 区域。
单击 设置,进行以下设置:
在 Referer 框中,添加白名单网址。多个 Referer 网址使用换行符分隔。
在 空 Referer 框中,选择是否允许 Referer 为空。

单击 保存。

举例

对于一个名为 test-1-001 的存储空间,设置其Referer白名单为 http://www.aliyun.com。则只有 Referer 为 http://www.aliyun.com 的请求才能访问 test-1-001 这个存储空间中的对象。

三、API:Put Bucket Referer防盗链功能操作步骤

PutBucketReferer接口用于设置一个Bucket的Referer访问白名单和是否允许Referer字段为空的请求访问。

请求语法

PUT /?referer HTTP/1.1
Date: GMT Date
Content-Length:ContentLength
Content-Type: application/xml
Host: BucketName.oss.aliyuncs.com
Authorization: SignatureValue

<?xml version="1.0" encoding="UTF-8"?>
<RefererConfiguration>
<AllowEmptyReferer>true</AllowEmptyReferer >
<RefererList>
<Referer> http://www.aliyun.com</Referer>
<Referer> https://www.aliyun.com</Referer>
<Referer> http://www.*.com</Referer>
<Referer> https://www.?.aliyuncs.com</Referer>
</RefererList>
</RefererConfiguration>
请求元素(Request Elements)

表 1. 请求元素

名称 类型 是否必需 描述
RefererConfiguration 容器 保存Referer配置内容的容器

子节点:AllowEmptyReferer节点、RefererList节点

父节点:无

AllowEmptyReferer 枚举字符串 指定是否允许referer字段为空的请求访问。取值:
  • true (默认值)
  • false

父节点:RefererConfiguration

RefererList 容器 保存referer访问白名单的容器。

父节点:RefererConfiguration

子节点:Referer

Referer 字符串 指定一条referer访问白名单。

父节点:RefererList


细节分析

只有Bucket的拥有者才能发起Put Bucket Referer请求,否则返回403 Forbidden消息。错误码:AccessDenied。
AllowEmptyReferer中指定的配置将替换之前的AllowEmptyReferer配置,该字段为必填项,系统中默认的AllowEmptyReferer配置为true。
此操作将用RefererList中的白名单列表覆盖之前配置的白名单列表,当用户上传的RefererList为空时(不包含Referer请求元素),此操作会覆盖已配置的白名单列表,即删除之前配置的RefererList。
如果用户上传了Content-MD5请求头,OSS会计算body的Content-MD5并检查一致性,如果不一致,将返回InvalidDigest错误码。
示例

不包含Referer的请求示例:

PUT /?referer HTTP/1.1
Host: BucketName.oss.example.com
Content-Length: 247
Date: Fri, 04 May 2012 03:21:12 GMT
Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:KU5h8YMUC78M30dXqf3JxrTZHiA=

<?xml version="1.0" encoding="UTF-8"?>
<RefererConfiguration>
<AllowEmptyReferer>true</AllowEmptyReferer >
< RefererList />
</RefererConfiguration>
包含Referer的请求示例:

PUT /?referer HTTP/1.1
Host: BucketName.oss.example.com
Content-Length: 247
Date: Fri, 04 May 2012 03:21:12 GMT
Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:KU5h8YMUC78M30dXqf3JxrTZHiA=

<?xml version="1.0" encoding="UTF-8"?>
<RefererConfiguration>
<AllowEmptyReferer>true</AllowEmptyReferer >
< RefererList>
<Referer> http://www.aliyun.com</Referer>
<Referer> https://www.aliyun.com</Referer>
<Referer> http://www.*.com</Referer>
<Referer> https://www.?.aliyuncs.com</Referer>
</ RefererList>
</RefererConfiguration>
返回示例:

HTTP/1.1 200 OK
x-oss-request-id: 534B371674E88A4D8906008B
Date: Fri, 04 May 2012 03:21:12 GMT
Content-Length: 0
Connection: keep-alive
Server: AliyunOSS

四、对象存储OSS防盗链功能视频教程

详细视频请访问:对象存储OSS防盗链功能视频教程

以上就是存储在阿里云OSS上的文件,如何设置防盗链功能,如果您还有阿里云服务器价格/阿里云产品折扣以及阿里云技术服务等,请您直接联系本站客服,阿里云代理商凯铧互联为您提供一对一服务。 阿里云代理商凯铧互联会为您提供专业全面的技术服务,同时还能为您提供阿里云产品购买的专属折扣优惠。通过凯铧互联购买可以获得折上折优惠!若您需要帮助可以直接联系我方客服,阿里云代理商凯铧互联专业技术团队为您提供全面便捷专业的7x24技术服务。 电话专线:136-5130-9831,QQ:3398234753。

为什么选择我们:北京凯铧互联科技有限公司(简称凯铧互联)由多名前阿里云资深技术专家创立,核心员工来自阿里巴巴、腾讯等,作为阿里云,腾讯云百度云,金山云重要的合作伙伴,专注于为企业用户提供云计算及云计算的解决方案。总部设在北京,并在内蒙设有办事处。做为一家综合性方案商,凯铧互联向各行业用户提供基于云计算的各种解决方案。为用户获得优质服务的同时,秉承"专业规划、周到服务"的服务理念,根据用户的实际情况,充分考虑各种网络资源的特点及功效,为用户量身定做一套适合于其实际应用需求的网络应用方案。帮助用户利用互联网的力量展开新的营销方式,并大大缩短了项目实施周期,获得用户的一致好评。