上云无忧 > 文档中心 > 百度智能云内容分发网络CDN高级鉴权
内容分发网络CDN
百度智能云内容分发网络CDN高级鉴权

文档简介:
CDN加速节点和客户源站配合实现的资源防盗方法,可根据业务需要选择不同的鉴权方式对URL进行加密,实现对源站资源的保护。 为防止客户源站内容被盗用,CDN提供防盗链功能,客户可通过配置Referer和IP的黑白名单来保护源站资源。
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

概述

CDN加速节点和客户源站配合实现的资源防盗方法,可根据业务需要选择不同的鉴权方式对URL进行加密,实现对源站资源的保护。

应用场景

为防止客户源站内容被盗用,CDN提供防盗链功能,客户可通过配置Referer和IP的黑白名单来保护源站资源。然而由于Referer内容可被伪造,实际使用中仍存在盗链的隐患。为了更好地保护源站资源,CDN支持加密源站URL的功能,通过鉴权的方式来正确响应合法请求、拒绝非法请求。

原理说明

URL高级鉴权是百度智能云CDN加速节点和客户源站配合实现的一种更加安全可靠的源站资源防盗方法。

  1. CDN客户提供加密URL给客户端
  2. 客户端使用加密URL对CDN节点发起请求
  3. CDN加速节点验证加密URL的权限信息以判断请求的合法性。请求合法时正常响应,请求不合法时拒绝请求,以保护源站资源。

URL鉴权方式

百度智能云CDN支持A类、B类、C类三种鉴权方式,用户可以根据业务需要选择不同的鉴权方式对URL进行加密,实现对源站资源的保护。

A类鉴权方式

原理说明

原始URL: http://Domain/Filename

加密URL: http://Domain/Filename?auth_key=Timestamp-Rand-Uid-Md5hash

加密URL字段解释

字段 描述
Domain CDN客户站点的域名
Filename 实际回源访问的URL,鉴权时Filename需以/开头
Timestamp 加密URL失效时间,整形正数,值为1970年1月1日至失效时间之间秒数。可为10进制或16进制,需与控制台配置一致。 鉴权Key有效时间由用户在控制台配置,默认为1800s,您访问CDN的时间超过Timestarmp+鉴权Key有效时间后,该鉴权URL失效。例如,服务端返回数据的时间为202011181400,控制台配置的有效时间为1800s,则链接的真正失效时间为2020-11-18 14:30:00
Rand 随机数,不能包含中划线-。
Uid userId,不能包含中划线-。
Md5hash 通过md5算法计算出来的验证串,数字0-9和小写英文字母a-z混合组成,固定长度32。值为md5sum(sstring),其中sstring="Filename-Timestamp-Rand-Uid-Key",Key可以为主KEY或者备KEY

CDN服务器接收到请求后,会执行如下校验。

1.解析请求中Timestamp,如果Timestamp+鉴权Key有效时间之和小于当前时间,则认为加密URL过期,响应HTTP 403错误。

2.以sstring方式构造出一个字符串。然后使用md5算法算出HashValue,并与客户端请求中带来的Md5hash进行对比。如果一致则认为鉴权通过并返回文件,否则鉴权失败返回HTTP 403错误。

示例说明

  1. 原始URL:http://opencdn.example.com/authentication/test/2F.html。
  2. 设置密钥:bdcloud666(由用户自行设置)。
  3. 客户设置加密URL失效日期为:2017年6月30日00:00:00,即计算出来的秒数为1498752000;rand设置为"0",uid设置为"0"。
  4. 客户拼接出sstring:"/authentication/test/2F.html-1498752000-0-0-bdcloud666"
  5. 根据sstring字符串计算md5hash = md5sum("/authentication/test/2F.html-1498752000-0-0-bdcloud666") = 89518343a306f93173783a260bb364f0
  6. 生成加密URL为:http://opencdn.example.com/authentication/test/2F.html?auth_key=1498752000-0-0-89518343a306f93173783a260bb364f0。
  7. 客户端使用加密URL访问CDN节点,CDN节点对Timestamp和Md5hash进行校验,校验通过则返回文件,否则鉴权失败返回HTTP 403错误。

API配置示例

"anti_hot_link":{"antiType": "typeA", "secretKey": "bdcloud666", "newsecretKey": "opencdn666","secureFile":
 "/test.txt"}

B类鉴权方式

原理说明

原始URL: http://Domain/Filename

加密URL: http://Domain/Timestamp/Md5hash/FileName

加密URL字段解释

字段 描述
Domain CDN客户站点的域名
Timestamp 时间戳,格式可以为10进制、16进制或格式为YYYYMMDDHHMM。时间戳 + 有效时间(控制台配置)即为加密URL过期时间。例如有效时间配置成1800s,时间戳设置成201706301000,那么加密URL在2017-06-30 10:00:00之后失效。
Md5hash 通过md5算法计算出来的验证串,数字0-9和小写英文字母a-z混合组成,固定长度32。值为md5sum(sstring),其中sstring="KeyTimestampFilename",Key可以为主KEY或者备KEY
Filename 实际回源访问的URL,鉴权时Filename需以/开头。

CDN服务器接收到请求后,会执行如下校验。

  1. 解析请求中Timestamp,如果(Timestamp + 有效时间)小于当前时间,则认为加密URL过期,响应HTTP 403错误。
  2. 构造sstring(sstring="KeyTimestampFilename",Key可以为主KEY或者备KEY),然后使用md5算法算出HashValue,并与客户端请求中带来的Md5hash进行对比。如果一致则认为鉴权通过并返回文件,否则鉴权失败返回HTTP 403错误。

示例说明

  1. 原始URL:http://opencdn.example.com/4/44/obhqonkjtlhquiy93.mp3。
  2. 设置密钥:bdcloud666(由用户自行设置)。
  3. 设置有效时间:1800s(由用户自行设置)
  4. 设置timestamp为201706301000(格式为YYYYMMDDHHMM),即:2017年6月30日10:00:00
  5. 客户拼接出sstring:"bdcloud666201706301000/4/44/obhqonkjtlhquiy93.mp3"
  6. 根据sstring字符串计算md5hash = md5sum("bdcloud666201706301000/4/44/obhqonkjtlhquiy93.mp3") = c13e51c58f41084ac98bd9feeeb1a346
  7. 生成加密URL为:http://opencdn.example.com/201706301000/c13e51c58f41084ac98bd9feeeb1a346/4/44/obhqonkjtlhquiy93.mp3。
  8. 客户端使用加密URL访问CDN节点,CDN节点对Timestamp和Md5hash进行校验,校验通过则返回文件,否则鉴权失败返回HTTP 403错误。

API配置示例

"anti_hot_link":{"antiType": "typeB", "secretKey": "bdcloud666", "newsecretKey": "opencdn666","secureFile": 
"/test.txt", "timeout": 1800}

C类鉴权方式

原理说明

原始URL: http://Domain/Filename

加密URL格式一: http://Domain/Md5hash/Timestamp/FileName

加密URL格式二: http://Domain/FileName?md5hash=Md5hash&timestamp=Timestamp

加密URL字段解释

字段 描述
Domain CDN客户站点的域名
Md5hash 通过md5算法计算出来的验证串,数字0-9和小写英文字母a-z混合组成,固定长度32。值为md5sum(sstring),其中sstring="KeyFilenameTimestamp",Key可以为主KEY或者备KEY
Timestamp 时间戳,格式可以为10进制、16进制,表示的是1970年1月1日至时间戳之间秒数。格式需与控制台配置一致。时间戳 + 有效时间(控制台配置)即为加密URL过期时间。例如有效时间配置成1800s,时间戳设置成201706301000,那么加密URL在2017-06-30 10:00:00之后失效。
Filename 实际回源访问的URL,鉴权时Filename需以/开头。

CDN服务器接收到请求后,会执行如下校验。

  1. 解析请求中Timestamp,如果(Timestamp + 有效时间)小于当前时间,则认为加密URL过期,响应HTTP 403错误。
  2. 构造sstring(sstring="KeyFilenameTimestamp",Key可以为主KEY或者备KEY),然后使用md5算法算出HashValue,并与客户端请求中带来的Md5hash进行对比。如果一致则认为鉴权通过并返回文件,否则鉴权失败返回HTTP 403错误。

示例说明

  1. 原始URL:http://opencdn.example.com/test.flv。
  2. 设置密钥:bdcloud666(由用户自行设置)。
  3. 设置有效时间:1800s(由用户自行设置)
  4. 客户设置timestamp为5955b0a0(格式为16进制),即:2017年6月30日10:00:00
  5. 客户拼接出sstring:"bdcloud666/test.flv5955b0a0"
  6. 根据sstring字符串计算md5hash = md5sum("bdcloud666/test.flv5955b0a0") = 34f55132617957ab98d86c4342a1f394。
  7. 生成加密URL为:

    • 格式一: http://opencdn.example.com/34f55132617957ab98d86c4342a1f394/5955b0a0/test.flv。
    • 格式二: http://opencdn.example.com/test.flv?md5hash=34f55132617957ab98d86c4342a1f394&timestamp=5955b0a0。
  8. 客户端使用任一格式加密URL访问CDN节点,CDN节点对Timestamp和Md5hash进行校验,校验通过则返回文件,否则鉴权失败返回HTTP 403错误。

配置URL鉴权

  1. 登录CDN管理控制台,进入“内容分发网络CDN”页面。
  2. 在左侧导航栏,点击域名管理
  3. 进入域名管理页面,点击目标域名操作列的管理
  4. 进入“CDN域名详情”页,在页面上方导航栏选择访问控制页签。
  5. 进入访问控制页面,点击高级鉴权设置模块的编辑
  6. 选择开启鉴权配置,配置以下参数:
参数 说明
类型选择 鉴权类型有三种,分别为A类鉴权、href="https://cloud.baidu.com/doc/CDN/s/ujwvyeo0t#b类鉴权方式" target="_blank" rel="noopener">B类鉴权和href="https://cloud.baidu.com/doc/CDN/s/ujwvyeo0t#c类鉴权方式" target="_blank" rel="noopener">C类鉴权,请根据需要选择。
主KEY / 备KEY
  • 鉴权KEY包含主KEY和备KEY,主KEY必须设置,通过此KEY生成加密URL来限制用户访问。
  • 当需要替换密钥时,若需要新旧密钥同时生效,可设置备KEY。
  • 主、备KEY之一鉴权通过即可正常访问。备KEY不强制填写,格式与主KEY相同。
  • KEY的格式为大小写字母、数字,长度6到32。
时间格式 可选择十六进制十进制
有效时间 用户设置的加密URL的有效时间,用以生成鉴权URL,以s(秒)为单位,时间范围0~100000000整数。

  1. 点击保存后,在高级鉴权模块可以看到鉴权配置成功,页面提示“配置已更新成功,大约五分钟生效”。

说明:

  • 高级防盗链功能开启后,可根据用户设置的鉴权Key对URL进行加密,保护客户源站资源。
  • 鉴权计算器可以根据选择的类型以及输入的参数生成鉴权URL,用户可以通过鉴权计算器知晓配置结果并验证是否生效。

CDN 三种高级鉴权 PHP 代码

CDN提供了以下三种高级鉴权的 PHP Demo。

CDN在鉴权错误时,会给客户端返回403响应码,并在响应头里提示鉴权错误的类型,如:X-Error-Info: typeA

A类鉴权方式

function demoA(){ $time = strtotime("+3 hours"); $key = "key1234"; $domain = "http://test.cdn.bce.com"; 
$filename = "/dir/index.html"; //$sstring = "$filename-$time-$rand-$uid-$key" $sstring 
= $filename."-".$time."-0-0-".$key; $md5 = md5($sstring); $auth_key = "auth_key=".$time.
"-0-0-".$md5; $url = $domain.$filename."?".$auth_key; // echo "md5_src_string: \t".$sstring.
"\n"; echo "request_url: \t\t".$url."\n"; }

B类鉴权方式

function demoB(){ $dt = new DateTime("now", new DateTimeZone('Asia/Chongqing')); $time = 
$dt->format("YmdHi"); $key = "key1234"; $domain = "http://test.cdn.bce.com"; $filename 
= "/dir/index.html"; //$sstring = "$key$time$filename" $sstring = $key.$time.$filename;
 $md5 = md5($sstring); $url = $domain."/".$time."/".$md5.$filename; // 
echo "md5_src_string: \t".$sstring."\n"; echo "request_url: \t\t".$url."\n"; }

C类鉴权方式

function demoC(){ $time = dechex(time()); $key = "key1234"; $domain =
 "http://test.cdn.bce.com"; $filename = "/dir/index.html"; //$sstring = 
"$key$filename$time" $sstring = $key.$filename.$time; $md5 = md5($sstring); $url1 =
 $domain."/".$md5."/".$time.$filename; $url2 = $domain.$filename."?md5hash=".$md5."&timestamp=".$time;
 // echo "md5_src_string: \t".$sstring."\n"; echo "request_url type1: \t".$url1."\n"; echo "request_url
 type2: \t".$url2."\n"; }

相似文档
  • 登录CDN管理控制台,进入“内容分发网络CDN”页面。 在左侧导航栏,点击域名管理。 进入域名管理页面,点击目标域名操作列的管理。 进入“CDN域名详情”页,在页面上方导航栏选择回源配置页签。 进入回源配置页面,点击回源配置设置模块的编辑。 将回源域名配置为加速域名、源站域名或自定义域名。
  • 百度智能云CDN当前已支持IPv6开关配置。开启后,IPv6的客户端请求将支持以IPv6协议访问CDN,CDN也将携带IPv6的客户端IP信息访问您的源站。
  • HTTP头设置功能支持您自定义或添加可选CDN节点到客户端的response(HTTP响应头)、CDN节点到源站的request(HTTP请求头)中的header信息。
  • CDN支持flv与mp4视频类型的拖拽,开启拖拽可降低回源率,提升速度。 百度智能云CDN支持MP4文件的伪流(pseudo-streaming)播放,通常这些文件拓展名为.mp4,.m4v,.m4a。
  • SEO(Search Engine Optimization)优化是一种利用搜索引擎的规则提高网站在有关搜索引擎内的自然排名的方式。目的是为网站提供生态式的自我营销解决方案,让其在行业内占据领先地位,获得品牌收益。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部