一、引言
1.1 目的
对网站指定类型链接(如:页面,图片,http、rtmp、mms等协议视频)增加防盗链功能,避免URL被盗链。
1.2 关键词
算法,防盗链,MD5,重定向器,referer,cookie
1.3 防盗链方式
通过referer
通过cookie
通过特有的算法对url进行加密,达到动态防盗的作用
二、CDN防盗链处理流程
①用户发起请求,如果为动态防盗链则请求url中包括加密信息;
②CDN加速服务器接到用户请求后,把请求交给防盗链处理服务;
③防盗链处理服务对请求进行检验,并把检验结果交给CDN加速服务器;
④如果检验正确,CDN加速服务器从缓存中,或者回源,获取客户请求的文件;
⑤CDN加速服务器把响应结果返回给客户;
⑥如果检验错误,将用户重定向到指定的页面,或者直接返回403。
三、防盗链原理
3.1 通过referer进行防盗链
1)用户发起访问请求,服务器检查用户请求过来的url需要进行防盗链校验,则判断请求头信息里面的referer是否匹配防盗链规则中允许的referer。
2)如果匹配,则CDN加速服务器向用户返回正常的相应。
3)如果不匹配,则把请求重定向到约定的页面,或直接返回403。
3.2 通过cookie进行防盗链
1)用户发起访问请求,服务器检查用户请求过来的url需要进行防盗链校验,则判断http请求头信息里面的cookie是否匹配防盗链规则中允许的cookie。
2)如果匹配,则CDN加速服务器向用户返回正常的相应。
3)如果不匹配,则把请求重定向到约定的页面,或直接返回403。
3.3 http协议动态防盗链
3.3.1 URL格式
在每个URL后加入一段KEY,形成如下的格式:
http://www.safecdn.cn/a/b/test.mp3?key=xxxxxxxxxxxyyyyyyyyyyyy
URL格式包括:
http、mms等协议
域名的组成部分
URI的组成部分
Key的组成部分
3.3.2 Key的组成
其中key=20190801101000A-MD5-KEY表示一个加密串
加密串包括两个部分:
20120801101000表示时间戳:年月日时分秒
A-MD5-KEY是一个MD5串,其计算方式
A-MD5-KEY=md5(uri + datetime + password)
其中uri即请求中的/a/b/test.mp3
datetime为请求中的时间戳20120801101000
password是源站和CDN约定的一个密码
3.3.3 校验过程
- 检查防盗链的串(即key)是否存在,如果不存在,则返回校验失败。
- 从防盗链串中取出日期时间,与当前时间比较,如果超出有效期范围,(例如,如果与当前时间相减,大于±2小时),则返回校验失败。
- 生成MD5的值,与请求中的A-MD5-KEY相比较,如果不等,则返回校验失败。
- 如果上述步骤都通过,则返回校验成功。
3.4 rtmp协议动态防盗链
3.4.1 URL格式
在每个URL后加入一段KEY,形成如下的格式:
rtmp://1.1.1.1/safecdn_Live?key=xxxxxxxxxxxyyyyyyyyyyyy
3.4.2 Key的组成
其中key=20190801101000safecdn_LiveA-MD5-KEY表示一个加密串
加密串包括:
20190801101000表示时间戳:年月日时分秒
DNION_Live表示流名
A-MD5-KEY是一个MD5串,其计算方式:
A-MD5-KEY=md5(datetime + 流名 + password)
datetime为请求中的时间戳20190801101000
其中流名即safecdn_Live
password是源站和CDN约定的一个密码
3.4.3 校验过程
客户通过rtmp协议connect命令连接,在connect命令的后追加三个字段,即时间戳、流名和通过md5计算出来的token,模块收集到这个信息后做如下验证:
1、验证发过来的connect命令里面是否有需求字段,如果没有直接拒绝掉视频流请求;
2、从防盗链串中取出时间戳时间,与当前时间比较,如果超出有效期范围,(例如,如果与当前时间相减,大于±2小时),则返回校验失败,拒绝客户流请求;
3.、在时间戳验证通过后,将connect传递过来的时间戳+流名+约定的密码计算出md5和传递过来的md5做比对;
4、如果上述步骤都通过,则返回校验成功。
四、服务器返回的响应
- 如果校验成功,则CDN加速服务器向用户返回正常的响应。
- 如果校验失败,则把请求重定向到约定的页面,或直接返回403。
原创文章,作者:赛福,如若转载,请注明出处:https://www.safecdn.cn/1214.html
本站不销售、不代购、不提供任何支持,仅分享网络信息,请自行辨别,请遵纪守法、文明上网。