又拍云php版Token授权防盗链整理

Token防盗链用处颇多,比如图片防盗链,影视防盗链,还可以用于URL访问授权中,失效或无效授权均不返回资源。

先来看看又拍云(upyun.com)启用Token防盗链前后,图片文件访问URL分别如下:

// 启用前
http://yang.b0.upaiyun.com/2017/01/aidbgien48fy5512.jpg

// 启用后
http://yang.b0.upaiyun.com/2017/01/aidbgien48fy5512.jpg?_upt=d8dnt84yd92d7vz473

可以看到启用后,多出了 _upt 参数,那我们接着看看又拍云Token防盗链PHP版大概流程:

// 授权1小时后过期
$etime = time() + 36000;

// token防盗链密钥
$key = 'xxxx';

// 图片相对路径
$path = '/2015/04/2015040101.png';

// 生成 token 授权:将三个参数以&符号拼接,并取其md5加密值的指定8位字符,最后与过期时间拼接
$_upt = substr( md5($key.'&'.$etime.'&'.$path), 12, 8 ) . $etime;
echo $_upt;

将 _upt 签名拼接到 URL 中或者存储到 Cookie 中,可起到防盗链的作用。

_upt 签名

_upt = md5(token密匙&etime过期时间&URI){取中间8位}+etime

参数注释:

token密匙:用户所填的密钥
etime:过期时间,UNIX TIME 格式,如:1483311600
URI:请求地址(不包含?及后面的Query String),如:/dir/pic.jpg

PS.资料来源于又拍云。