时候戳防盗链鉴权php完成

<?php
$url="http://domain/1.png?v=1";
$url = explode("?", $url);
$path=basename($url[0]);
$path="/".$path;
$time = time()+3600;
$T=dechex($time);
$key="xxxx";
$S=$key.$path.$T;
$token = md5($S);
$sign =strtolower($token);
if(isset($url[1])){
$url = "http://domain".$path."?".$url[1]."&sign=".$sign."&t=".$T;
echo($url);
}else{
$url = "http://domain".$path."?sign=".$sign."&t=".$T;
echo($url);
}
/*
二、算法申明
基于时候戳的防盗链是经由过程对时候有关的字符串举行署名,将时候、署名经由过程肯定的体式格局通报给
CDN服务器作为剖断依据,CDN边沿节点依据商定的算法推断来访URL是不是有接见权限。
经由过程,实行下一步;不经由过程,相应HTTP status code 403。
若同时设置了Referer、UA防盗链、时候戳防盗链,有一项不满足前提,即为不经由过程,相应 403 。
署名参数
● T:URL逾期时候。按unix_time的16进制小写情势示意。 如 2015-08-01 00:00:00 –>
1438358400 –> 55bb9b80
● key: 和CDN协商的加密字符串
● path:接见资本的URL中的途径部份,比方:接见的URL为http://xxx.yyy.com/DIR1/dir2/
vodfile.mp4?v=1.1,则path=/DIR1/dir2/vodfile.mp4(注重不含querystring部份)
● 署名字原始符串S=key + path + T
● 署名SIGN=md5(S).to_lower(),to_lower指将字符串转换为小写
比方:接见的URL为 http://xxx.yyy.com/DIR1/dir2/vodfile.mp4?v=1.1,假定key=12345678,T=55bb9b80,
则S=12345678/DIR1/dir2/vodfile.mp455bb9b80,SIGN=19eb212771e87cc3d478b9f32d6c7bf9
署名参数通报体式格局
作为URL查询参数。
比方原始接见的URL为: http://xxx.yyy.com/DIR1/dir2/vodfile.mp4?v=1.1
终究构成的接见URL为: http://xxx.yyy.com/DIR1/dir2/vodfile.mp4?v=1.1&sign=<SIGN>&t=<T>
● 署名参数 sign、 t ;
● <SIGN>、<T> 替换为对应的值, 现实url中不含<> ;
/DIR1/dir2/vodfile.mp4?sign=83a880fd7aa06f3d3c6caa54d8f164ec&t=55bbefe0
*/
    原文作者:三木
    原文地址: https://segmentfault.com/a/1190000006978958
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞