对于公共读文件,为了在业务中避免被盗图的风险,需要限制向外暴露的图片URL,匿名访问者只能获取到经过缩略处理或者添加水印后的图片。这一需求可以通过开启原图保护的方式实现。

背景信息

开启原图保护以后,OSS中存储的图片无法通过下面两种方式访问:

  • OSS地址直接访问,如:http://bucket.<endpoint>/object
  • 处理参数请求缩略图,如:http://bucket.<endpoint>/object?x-oss-process=image/action,parame_value

对于开启了原图保护的图片,只能通过以下样式的方式访问:

  • URL参数方式,如:http://bucket.<endpoint>/object?x-oss-process=style/<StyleName>
  • 分隔符方式,如:http://bucket.<endpoint>/object<分隔符><StyleName>
说明
  • 图片原图保护功能仅针对匿名访问公共读文件有效,对于带签名的访问无效。
  • 原图保护主要针对于图片文件,必须配置被保护图片的后缀。

配置原图保护

  1. 登录OSS管理控制台
  2. 进入目标Bucket,找到图片处理页签。
    • 新版控制台
      1. 单击Bucket列表,之后单击目标Bucket名称。
      2. 单击数据处理 > 图片处理
    • 旧版控制台
      1. 在左侧Bucket列表,单击目标Bucket名称。
      2. 单击图片处理页签。
  3. 单击访问设置,在弹出的访问设置对话框中设置以下参数:
    • 原图保护:选择开启原图保护。开启后,图片文件只能通过传入stylename和带签名的方式访问。OSS将禁止用户通过直接访问原文件或传入图片参数修改图片样式的形式对图片进行访问。
    • 原图保护后缀:设置被保护的原图后缀,只有带有所设置后缀的原图会被保护。例如将此参数设置为jpg,用户依然可以直接访问.png后缀的原图。
  4. 单击确定

SDK 示例

常见问题

OSS开启了原图保护,直接访问OSS文件时会正常返回403,但是通过CDN来进行请求时原图保护无效,返回200。

这种情况有可能是CDN回源到了私有Bucket,造成原图保护失效。原图保护功能仅针对匿名访问公共读文件有效,对于带签名的访问是无效的。