七牛云 时间戳防盗链

基于时间戳的防盗链是通过对时间有关的字符串进行签名,将时间、签名通过一定的方式传递给 CDN 服务器作为判定依据,CDN 边缘节点根据约定的算法判断来访URL是否有访问权限。

通过,执行下一步;不通过,响应 HTTP status code 403。

签名参数

  • T:URL 过期时间。按 unix_time 的 16进制小写形式表示。 如 2015-08-01 00:00:00 –> 1438358400 –> 55bb9b80

  • key:在开启时间戳防盗链时,可以由七牛提供:(开发者中心 -> CDN -> 防盗链设置 ->时间戳防盗链 ->KEY生成器),使用其中一个即可。也可以自行使用算法生成,如下方生成实例中gen_key()函数

  • path:访问资源的 URL 中的路径部分,例如:访问的URL为 http://xxx.yyy.com/DIR1/dir2/vodfile.mp4

签名算法

  • 签名原始字符串 S = key + url_encode(path) + T 。斜线 / 不编码。

  • 签名 SIGN = md5(S).to_lower(),to_lower 指将字符串转换为小写;

附一段PHP 代码

class Qiniu{
    const VIDEO_HOST = 'https://video.test.cn';
    const KEY1 = '59a929ahkudkilugtXXX';
    public static function encryptUrl ($url = '', $time = 5) {
         if (strpos($url, self::VIDEO_HOST) === false) {
          return $url;
         }
         $path = str_replace(self::VIDEO_HOST, '', $url);
         $t = dechex(time() + $time);
         $sign = md5(self::KEY1.$path.$t);
         return $url . '?sign='.$sign.'&t='.$t;
    }
}

参考七牛云防盗链配置,实现时间戳加密访问。

你可能感兴趣的:(防盗链,网站开发)