程序员 Ubuntu google Windows centos nginx Python wordpress Android 微软 linux java mysql 开源 linux命令 apache Firefox shell HTML5 php

阿里云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字段。

阿里云 防盗链 白名单 refer为空 referer OSS aliyun

星号“*”:
可以使用星号代替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不为空。

原文地址: http://www.amznz.com/aliyun-oss-referer/

延伸阅读

评论