CDN防盗链时间戳

前言

最近老毛病又犯了,又开始陷入选择困难了,无聊之余看起了七牛的文档。新改版的文档稍微详细了一点,但是还是有些坑没拍。

目前在关注防盗链问题,因为动不动就遇见有人被刷流量,而且很难避免。特别很多站长用上了cdn却没有上防盗链。现在基本上任何一家都有防盗链的设置,做好预防很重要。特别目前的cdn厂商都是基本没什么提示的,被刷了可能也要一两天时间,足够不怀好意的人干很多事了。
其中七牛阿里被吐槽的最多,理由我觉得也很简单,用的人数多,加上这两家也明显不想设置流量计算的带宽限制。阿里好点可以带宽计费,而且可以设置监控。七牛就。。。
这里说一下七牛和又拍的时间戳防盗链(又拍叫做token防盗链)。原理就是你指定链接过期时间+文件的url+你的key 这三者md5加密 然后来防止被人长期盗链,针对采集。好处是资源只能存活有限时间,如果要继续查看必须要在我们网站上获得新的链接,缺点是每次都要计算要消耗一定的资源。

又拍算法

下面是又拍的算法


$etime = time() + 600; // 授权十分钟后过期
$key = 'alibaba';   // token 防盗链密钥
$path = '/wp-content/uploads/2017/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,这个也是巨坑,害我试了半天,发个工单也是半天没人回我。

Last modification:October 23rd, 2017 at 01:04 pm
If you think my article is useful to you, please feel free to appreciate

One comment

  1. 后知后觉

    测试一下mod标志

Leave a Comment