CDN防盗链时间戳

目前在关注防盗链问题,因为动不动就遇见有人被刷流量,而且很难避免。特别很多站长用上了cdn却没有上防盗链。现在基本上任何一家都有防盗链的设置,做好预防很重要。特别目前的cdn厂商都是基本没什么提示的,被刷了可能也要一两天时间,足够不怀好意的人干很多事了。

其中七牛阿里被吐槽的最多,理由我觉得也很简单,用的人数多,加上这两家也明显不想设置流量计算的带宽限制。阿里好点可以带宽计费,而且可以设置监控。七牛就有点坑了。。。
这里说一下七牛和又拍的时间戳防盗链(又拍叫做token防盗链)。原理就是你指定链接过期时间+文件的url+你的key 这三者md5加密 然后来防止被人长期盗链,针对采集。好处是资源只能存活有限时间,如果要继续查看必须要在我们网站上获得新的链接,缺点是每次都要计算要消耗一定的资源。

又拍算法

下面是又拍的算法

$etime = time() + 600; // 授权十分钟后过期
$key = 'alibaba';   // token 防盗链密钥
$path = '/wp-content/uploads/2018/02/qiniu-409x220.png'; // 图片相对路径
$sign = substr(md5($key.'&'.$etime.'&'.$path), 12,8).$etime;
echo $sign;
值得注意的是,当你开启token防盗链的时候,域名防盗链最好关了,因为这两者是同时生效的(又拍也没说清楚,巨坑)。有一点值得夸奖就是,设置下去的生效速度,又拍几乎是秒级生效,效果明显,然而我们的七牛大概一周

七牛算法

下面是七牛的时间戳算法,url和key改成你自己的。

$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);
}
七牛的话 需要注意的是
如果你访问的资源后面没有任何?xxx的话,需要加?sign而不是&sign,这个是个巨坑,大家注意啊!!!
本博客所有文章如无特别注明均为原创。作者:小乐复制或转载请以超链接形式注明转自 众众帮
原文地址《CDN防盗链时间戳
分享到:更多

相关推荐

发表评论

路人甲 表情
Ctrl+Enter快速提交

网友评论(0)