开发者社区 问答 正文

OSS如何实现设置防盗链?

OSS是按使用收费的服务,为了防止您在OSS上的数据被其他人盗链,OSS支持基于HTTP header中表头字段referer的防盗链方法。您可以通过 OSS管理控制台或者API的方式对一个Bucket设置referer字段的白名单和是否允许referer字段为空的请求访问。例如,对于一个名为oss-example的Bucket,设置其referer白名单为 http://www.aliyun.com/。则所有referer为 http://www.aliyun.com/的请求才能访问oss-example这个Bucket中的Object。

细节分析

  • 用户只有通过URL签名或者匿名访问Object时,才会做防盗链验证。请求的Header中有“Authorization”字段的,不会做防盗链验证。
  • 一个Bucket可以支持多个referer参数,这些参数之间由“,”号分隔。
  • 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。


功能使用参考

展开
收起
青衫无名 2017-10-17 15:41:43 2820 分享 版权
阿里云 AI 助理回答

OSS会在以下访问操作时进行防盗链验证:

  1. 当请求访问OSS中存储的资源时,OSS会检查HTTP或HTTPS头部中的Referer字段。
  2. 如果防盗链功能开启,并且配置了白名单或黑名单,OSS会依据配置规则判断Referer字段的值。
  3. 请求中如果Referer字段的值与配置的白名单不符,或者属于黑名单中的地址,OSS将拒绝访问并返回错误,如403 Forbidden。
  4. 当设置了不允许空Referer,且请求中没有Referer字段或其值为空时,OSS也会阻止访问。

综上,OSS在接收到任何带有或不带Referer字段的访问请求时,都会依据防盗链的配置规则进行验证,确保请求来源合法,防止未经授权的盗链行为导致的额外费用和资源滥用。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答