时间戳防盗链
2016-09-07 18:23
381 查看
首先上代码:
<?php
$url="rtmp://pili-live-rtmp.pili.echohu.top/1314xicong/hellolll";
$path=parse_url ($url);
$path=$path["path"];
$urls = explode("?", $url);
$time = time();
$T=dechex($time);
$key="huxicong";
$S=$key.$path.$T;
$token = md5($S);
$sign =strtolower($token);
if(isset($urls[1])){
$url = $url."&sign=".$sign."&t=".$T;
echo($url);
}else{
$url = $url."?sign=".$sign."&t=".$T;
echo($url);
}
/*
rtmp://pili-live-rtmp.pili.echohu.top
二、算法说明
基于时间戳的防盗链是通过对时间有关的字符串进行签名,将时间、签名通过一定的方式传递给
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
*/
<?php
$url="rtmp://pili-live-rtmp.pili.echohu.top/1314xicong/hellolll";
$path=parse_url ($url);
$path=$path["path"];
$urls = explode("?", $url);
$time = time();
$T=dechex($time);
$key="huxicong";
$S=$key.$path.$T;
$token = md5($S);
$sign =strtolower($token);
if(isset($urls[1])){
$url = $url."&sign=".$sign."&t=".$T;
echo($url);
}else{
$url = $url."?sign=".$sign."&t=".$T;
echo($url);
}
/*
rtmp://pili-live-rtmp.pili.echohu.top
二、算法说明
基于时间戳的防盗链是通过对时间有关的字符串进行签名,将时间、签名通过一定的方式传递给
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
*/
相关文章推荐
- mybatis selectkey获取主键
- Linux针对于各式U盘挂载方法整理
- Android自定义属性时format选项可以取用的值
- KindEditor白名单过滤和视频发布
- 表面增强拉曼散射
- BroadcastReceiver及Notification
- Android--DataBinding基础使用
- 图片服务架构学习之ZIMG
- ios 聚合数据接口调用demo :菜谱大全
- JAVA基础6.40——classpath
- 山东大学陈强教授的介绍及相关资源
- 思路与好题记录与小技巧
- RasSetSubEntryProperties
- React Native知识8-WebView组件
- Java面象对向的基本思想(五)
- !=null的正确使用心得——有些NullPointerException应该让它报出来
- 移动端选择插件mobiscroll.2.17的简化Demo
- SpringMVC自定义拦截器详解
- Maven的POM.xml配置大全
- JavaScript BOM