原图保护功能可以防止您OSS内允许匿名访问的图片文件被盗用。开启原图保护后,匿名访问者只能获取到经过缩略处理或者添加水印后的图片,无法再访问原图。

背景信息

开启原图保护以后,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>
    • 携带签名的请求,例如http://bucket.<endpoint>/object?OSSAccessKeyId=nz2pc56s9****9l&Expires=1141889120&Signature=vjbyPxybdZaNmGa%2By****YEAiv4%3D
注意 原图保护主要针对于图片文件,必须配置被保护图片的后缀。

配置原图保护

  1. 登录OSS管理控制台
  2. 单击Bucket列表,之后单击目标Bucket名称。
  3. 单击数据处理 > 图片处理 > 访问设置
  4. 访问设置页面中设置以下参数:
    • 原图保护:打开原图保护开关。开启原图保护后,图片文件只能通过传入stylename和带签名的方式访问,禁止直接访问原文件或传入图片处理参数访问图片。
    • 原图保护后缀:设置被保护的原图后缀,只有带有所设置后缀的原图会被保护。例如将此参数设置为jpg,您依然可以直接访问除.jpg后缀以外(例如.png)的原图。
    • 自定义分隔符:选中指定的分隔符之后,图片处理服务会将分隔符后的内容作为样式名称处理。目前仅支持短划线(-)、下划线(_)、正斜线(/)、感叹号(!)。详情请参见设置分隔符
  5. 单击确定

SDK 示例

常见问题

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

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

  • 问题二:开启原图保护后,通过签名后的URL可以访问原图?

    原图保护仅针对允许匿名访问的文件,使用签名URL访问图片属于非匿名访问,所以开启原图保护后,使用签名后的URL仍然可以访问原图。