阿里云OSS是按使用收费的服务,为了防止用户在 OSS 上的数据被其他人盗链,OSS 支持基于 HTTP header 中表头字段 referer 的防盗链方法。目前,只有通过OSS 的控制台可以对一个 bucket 设置 referer 字段的白名单和是否允许 referer 字段为空的请求访问。
例如,对于一个名为 oss-amznz 的bucket,设置其 referer 白名单为 http://www.amznz.com 则所有 referer 为 http://www.amznz.com 的请求才能访问 oss-amznz 这个 bucket 中的 Object。
细节分析:
1) 用户只有通过 URL 签名或者匿名访问 Object 时,才会做防盗链验证。请求的 Header 中有“Authorization”字段的,不会做防盗链验证。
2) 一个 bucket 可以支持多个 referer 参数,这些参数之间由“,”号分隔。
3) Referer 参数支持通配符“*”和“?”。
4) 用户可以设置是否允许 referer 字段为空的请求访问。
5) 白名单为空时,不会检查 referer 字段是否为空(不然所有的请求都会被拒绝)。
6) 白名单不为空,且设置了不允许 referer 字段为空的规则;则只有 referer 属于白名单的请求被允许,其他请求(包括 referer 为空的请求)会被拒绝。
7) 如果白名单不为空,但设置了允许 referer 字段为空的规则;则 referer 为空的请求和符合白名单的请求会被允许;其他请求都会被拒绝。
8) 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。
不允许Refer为空: 可能有些人搞不明白,简单说就是直接在浏览器中输入图片URL,refer为空;从网页中点击打开图片则refer不为空。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。