对象存储OSS支持对存储空间(Bucket)设置防盗链,即通过对访问来源设置白名单的机制,避免OSS资源被其他人盗用。referer命令用于添加、修改、查询、删除Bucket的防盗链配置。

注意事项

  • 本文各命令行示例均基于Linux 64位系统,其他系统请将命令开头的./ossutil64替换成对应的Binary名称。详情请参见命令行工具ossutil快速入门
  • 关于防盗链的更多信息,请参见防盗链

添加或修改防盗链配置

如果Bucket此前未添加过防盗链配置,则使用该命令将为Bucket添加防盗链配置。如果Bucket此前已添加防盗链配置,则使用该命令将直接覆盖已有的防盗链配置。

添加或修改防盗链配置的命令格式和示例如下:

  • 命令格式
    ./ossutil64 referer --method put oss://bucketname refererconfig [--disable-empty-referer]

    参数及选项说明如下:

    配置项 说明
    bucketname 待添加或修改防盗链配置的Bucket名称。
    refererconfig 填写域名或IP地址,支持通配符星号(*)和问号(?),多个Referer需以空格分隔。配置示例如下:
    • 配置为www.aliyun.com时,可匹配www.aliyun.com/123www.aliyun.com.cn等以www.aliyun.com为前缀的地址。
    • 配置为*www.aliyun.com/,可匹配http://www.aliyun.com/https://www.aliyun.com/的地址。
    • 通配符星号(*)表示使用星号代替0个或多个字符。例如配置为*.aliyun.com,可匹配help.aliyun.comwww.aliyun.com等地址。
    • 通配符问号(?)表示使用问号代替一个字符。
    • 支持带端口的域名或IP,例如www.example.com:808010.0.0.0:8080等地址。
    --disable-empty-referer 选择是否允许空Referer。
    • 不添加此选项时,表示允许空Referer,即HTTP或HTTPS Header中不带Referer字段或Referer字段为空。
    • 添加此选项后,表示不允许空Referer,即HTTP或HTTPS Header中包含Referer字段的请求才能访问OSS资源。
  • 使用示例

    为目标存储空间examplebucket设置防盗链,仅HTTP或HTTPS Header中与*www.aliyun.com匹配的请求允许访问examplebucket,且不允许空Referer。

    ./ossutil64 referer --method put oss://examplebucket *www.aliyun.com --disable-empty-referer

    为目标存储空间examplebucket设置防盗链,仅HTTP或HTTPS Header中包含example.aliyundoc.com的请求允许访问examplebucket,且允许空Referer。

    ./ossutil64 referer --method put oss://examplebucket example.aliyundoc.com

    以下输出结果表明已成功添加防盗链配置。

    0.134839(s) elapsed

查看防盗链配置

  • 命令格式
    ./ossutil64 referer --method get oss://bucketname [local_xml_file]

    参数说明如下:

    参数 说明
    bucketname 待获取防盗链配置的Bucket名称。
    local_xml_file 存放防盗链配置的本地文件名称,例如localfile.txt。如果未指定此参数,则防盗链配置将直接输出到屏幕。
  • 使用示例
    • 获取存储空间examplebucket的防盗链配置,并将配置结果写入本地文件localfile.txt
      ./ossutil64 referer --method get oss://examplebucket localfile.txt

      以下输出结果表明已成功获取防盗链配置。

      0.212407(s) elapsed
    • 获取存储空间examplebucket的防盗链配置,并将配置结果直接输出屏幕。
      ./ossutil64 referer --method get oss://examplebucket

      以下输出结果表明examplebucket的防盗链配置中,仅HTTP或HTTPS Header中与*www.aliyun.com匹配的请求允许访问examplebucket,且不允许空Referer。

      <?xml version="1.0" encoding="UTF-8"?>
        <RefererConfiguration>
            <AllowEmptyReferer>false</AllowEmptyReferer>
            <RefererList>
                <Referer>*www.aliyun.com</Referer>
            </RefererList>
        </RefererConfiguration>
      
      
      0.080482(s) elapsed

删除防盗链配置

  • 命令格式
    ./ossutil64 referer --method delete oss://bucketname

    bucketname表示待删除防盗链配置的Bucket名称。

  • 使用示例

    删除存储空间examplebucket的防盗链配置。

    ./ossutil64 referer --method delete oss://examplebucket

    以下输出结果表明已成功删除防盗链配置。

    0.212409(s) elapsed

通用选项

当您需要通过命令行工具ossutil切换至另一个地域的Bucket时,可以通过-e选项指定该Bucket所属的Endpoint。当您需要通过命令行工具ossutil切换至另一个阿里云账号下的Bucket时,可以通过-i选项指定该账号的AccessKey ID,并通过-k选项指定该账号的AccessKey Secret。

例如您需要为另一个阿里云账号下,华东1(杭州)地域下名为testbucket的存储空间设置防盗链,命令如下:

./ossutil64 referer --method put oss://testbucket www.alibabacloud.com -e oss-cn-hangzhou.aliyuncs.com -i LTAI4Fw2NbDUCV8zYUzA****  -k 67DLVBkH7EamOjy2W5RVAHUY9H****

关于此命令的其他通用选项的更多信息,请参见通用选项