基于时间戳的防盗链是通过对时间有关的字符串进行签名,将时间、签名通过一定的方式传递给 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';