开发者社区> 问答> 正文

OSS 防盗链设置实例

    阿里云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不为空。


展开
收起
mrznz 2013-04-13 11:59:12 13784 0
6 条回答
写回答
取消 提交回答
  • 哈哈 做好防盗链
    2013-04-17 09:40:55
    赞同 展开评论 打赏
  • 云栖社区聚能聊、问答管理员~发福利、搞怪,八卦我来,论技术、发话题、写博客你上!
    技术哥,好强大!
    2013-04-16 10:53:04
    赞同 展开评论 打赏
  • ReOSS防盗链设置实例
    2013-04-15 23:12:15
    赞同 展开评论 打赏
  • ReOSS防盗链设置实例
    有胜于无吧!
    2013-04-15 00:21:17
    赞同 展开评论 打赏
  • 不是说referer是很容易伪装的吗?这样的防盗链作用不大吧?
    2013-04-14 22:38:59
    赞同 展开评论 打赏
  • ReOSS防盗链设置实例
    防盗链省资源~~
    2013-04-13 12:30:55
    赞同 展开评论 打赏
滑动查看更多
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
OSS运维进阶实战手册 立即下载
《OSS运维基础实战手册》 立即下载
OSS运维基础实战手册 立即下载