防盗链

技术支持发表于:2016年03月29日 14:34:06更新于:2016年06月23日 17:53:42

又拍云拥有多种防盗链方式,在空间后台服务-->选择服务-->功能配置-->防盗链就能看见这些防盗链的类型。

源站类型:全部


IP 禁用

IP 防盗链目前暂时只支持黑名单逻辑。
  • 若需要禁止某些 IP 访问,则可以使用 IP 禁用功能

  • 支持 * 通配符,如 10.11.12.* 将禁止 10.11.12.0~10.11.12.255 的 IP 访问

域名防盗链

  • 白名单:仅允许名单中的域名网站访问文件,其他域名网站都不允许访问

  • 黑名单:仅禁止名单中的域名网站访问文件,其他域名网站都允许访问

  • 支持 * 通配符,比如白名单的 *upyun.com 将允许 www.upyun.comabcupyun.com 等网站访问

禁止 Referer 为空

特别地,默认 Referer 为空这种情况会绕过域名防盗链的逻辑。 若这里启用 禁止 Referer 为空,那么这类请求就直接被禁止访问了。

客户端白名单

客户端防盗链目前暂时只支持白名单逻辑。
  • 适合手机 APP 和客户端软件等可自定义 User Agent 的应用使用

  • User Agent 不区分大小写

  • 支持 * 通配符

Token 防盗链

Token 防盗链适合下载类网站或应用使用,可设置签名过期时间来控制文件的访问时限。

Token 防盗链原理图

签名方式说明

签名:

_upt = MD5(token 密匙&etime&URI){中间 8 位} + etime

参数:

  • token 密匙:用户所填的密钥

  • etime:过期时间,必须是 UNIX TIME 格式,如: 1378092990

  • URI:请求地址(不包含?及后面的 Query String),如: /dir/pic.jpg

备注:

  • 对于使用 Cookie 类无法给每个链接进行单独签名的情况,可使用 / 作为 URI 进行统一的泛签名,如:

MD5(token 密匙&过期时间&/){中间 8 位} + 过期时间
  • 注意:泛签名在过期时间内,对服务域名内的所有链接资源都有效

目录级别 Token 防盗链:_upp 参数

+----------------------+------------------------------------------------------------+
|                      | Ex. uri = '/a/b/c.jpg', ex_time = now() + 600              |
|    token secret      |                                                            |
|                      | _upt = md5(token_secret&ex_time&uri)[12:20] + ex_time      |
+----------------------+------------------------------------------------------------+

_upp 参数是用来配合 Token 防盗链的 _upt 参数使用的,以便支持用户可自定义目录级别进行签名,默认情况下 _upt 均以完整的 URI 进行签名,当 _upp = 2 那么就以相应的 uri = '/a/b/' 来进行签名。这样就很容易实现对某个目录的防盗链权限控制了。

示例

http://upyun-assets.b0.upaiyun.com/docs/cdn/upyun-cdn-architecture.png?_upp=2&_upt=abcdefgh1370000600

例如对于以上这条结合 _upp 参数的 Token 防盗链请求来说,对应 _upt 参数正确的签名应按如下公式进行计算(其中被签名 URI 此时为/docs/cdn/):

MD5(token 密匙&过期时间&/docs/cdn/){中间 8 位} + 过期时间

详细说明

  1. 其值应为正整数,设置范围 0 <= x <= 20,超过该范围或其它不合法的字符均视为无效值,此时仍然按照 URI 全路径进行匹配.

  2. 当 _upp = 0 时,总是匹配 /;其它 _upp = 1,2,3 ... 分别对应一级目录,二级目录,三级目录 ...

例如,对于 uri = '/a/b/c/foo.jpg' 来说:

[v] /a/b/c/foo.jpg => '/a/b/c/foo.jpg'

[v] /a/b/c/foo.jpg?_upp=0 => '/'
[v] /a/b/c/foo.jpg?_upp=1 => '/a/'
[v] /a/b/c/foo.jpg?_upp=2 => '/a/b/'
[v] /a/b/c/foo.jpg?_upp=3 => '/a/b/c/'

[x] /a/b/c/foo.jpg?_upp=4 => '/a/b/c/foo.jpg'
[x] /a/b/c/foo.jpg?_upp=-1 => '/a/b/c/foo.jpg'
[x] /a/b/c/foo.jpg?_upp=abc => '/a/b/c/foo.jpg'

防盗链设置视频:设置防盗链