CDN防盗链方案

一、引言

1.1 目的

对网站指定类型链接(如:页面,图片,httprtmpmms等协议视频)增加防盗链功能,避免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/cdn/2019/08/cdn-key.html

发表评论

邮箱地址不会被公开。