阿里云首页

如何验证OSS的Referer防盗链是否生效

概述

为防止存储于对象存储OSS的数据被其他人盗链而产生额外的费用,在OSS控制台的防盗链功能设置Referer白名单,限制仅白名单中的域名可以访问Bucket内的资源,在配置完成后,如何验证OSS的Referer防盗链是否生效。

详细信息

可参见访问对象存储OSS的过程中如何查询Object的访问和操作记录,查看OSS的访问记录,通过访问记录分析防盗链是否生效。您也可以参见以下操作,使用curl命令测试设置的防盗链是否生效。

测试准备

请参见设置防盗链,在OSS控制台中设置防盗链功能,具体参数如下:

  • Referer白名单,仅允许指定的域名访问OSS资源,其域名为http://www.example.com
  • 设置Referer不允许为空。
    说明
    • 空Referer表示HTTP或HTTPS请求中,不带Referer字段或Referer字段为空。
    • 如果不允许空Referer,则只有HTTP或HTTPS header中包含Referer字段的请求才能访问OSS资源。
    • 当您使用OSS的Bucket域名(如bucketname.oss-cn-zhangjiakou.aliyuncs.com)预览MP4文件时,由于浏览器默认会同时发出两个请求,其中一个为带Referer的请求,另一个为空Referer的请求,因此设置防盗链时必须同时满足在Referer中添加Bucket域名,且允许空Referer的条件。当您使用OSS的Bucket域名预览非MP4文件时,则仅需允许空Referer。
  • 在Bucket中创建一个名为testoss.txt的文件。

更多关于防盗链的介绍,请参见开发指南中的设置防盗链

测试方法

在浏览器中查看Header的Referer,查看配置是否正确。比如,在Chrome浏览器中按F12键,打开开发者工具,在Network中查看具体请求携带的Referer,检查与对应OSS中设置的Referer是否匹配。在Linux操作系统中使用curl命令测试的三种场景如下:

场景一

执行如下操作,通过curl命令不加参数访问,代表通过浏览器直接打开URL。由于设置了不允许Referer为空,系统报错,确认报错为AccessDenied,证明不允许Referer为空的设置生效。AccessDenied相关报错请参见OSS权限相关常见错误的排查方法进行处理。

curl http://www.example.com/testoss.txt

系统报错显示类似如下。

场景二

执行如下操作,通过curl命令加参数-e,传递设置的白名单中Referer到访问地址,代表由oss.jinxiangtest.com网站传递的请求。没有报错,证明白名单Referer设置生效。

curl -e http://www.example.com http://www.example.com/testoss.txt

系统显示类似如下。

场景三

执行如下操作,通过curl命令加参数-e,传递错误的Referer到访问地址,由于oss.jinxiangtest234.com不在白名单中,系统报错,证明白名单Referer设置生效。

curl -e http://www.example.com http://www.example.com/testoss.txt

系统报错显示类似如下。

相关文档

适用于

  • 对象存储 OSS
首页 如何验证OSS的Referer防盗链是否生效