又拍云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.资料来源于又拍云。