最近更新时间:2025-12-16 14:27:57
在CDN安全防护的场景中,若从IP、Refer、Url等维度均无明显可判断为异常的特征,可以考虑对域名开启时间戳防盗链,防止异常访问。
时间戳防盗链全称【时间戳+共享密钥防盗链】,目的是使得每个请求的 url 都具有一定的“时效性”,过期后需要重新计算鉴权参数,从而提高内容分发安全性,防止异常访问。
注意事项:
启用时间戳防盗链需要修改业务请求URL生成逻辑,在生成URL时加入timestamp和md5hash。请求URL未改造完成的情况下,注意不要直接启用时间戳防盗链配置,会导致未带鉴权参数的请求403。
CDN节点在验证请求时,首先将URL中timestamp的值与当前时间比较,如果timestamp的值小于当前时间,则认为过期,鉴权失败,拒绝访问,返回HTTP 403错误。如果timestamp的值大于当前时间,则用请求中md5hash的计算方法md5值(密钥+URI+时间戳),将这个值与请求中的md5hash值比对,比对一致则允许访问,否则认为鉴权失败,拒绝访问,返回HTTP 403错误。
时间戳+共享密钥防盗链为全局配置,支持两种类型,可根据自身业务需要进行选择。
类型1
加密字符串在URL的参数中
示例:http://DomainName/DataFile/FileName?t=timestamp&k=md5hash
类型2
加密字符串在URL的路径中
示例:http://DomainName/md5hash/timestamp/DataFile/FileName
timestamp:时间戳时间,默认为十进制Unix timestamp,单位秒;
key:密钥,支持主备情况,可自行设置,主密钥为必填项,备用密钥为选填,备用密钥最多可以设置4个;
uri:url中的资源路径path部分,不含协议及域名,不含参数,从/开始;
md5hash:鉴权值,md5hash=md5(key+uri+timestamp)
注意事项
md5鉴权因子中“+”为方便理解添加的文本分隔符,实际各鉴权因子间分隔符为空,参考下述示例说明。
1.选择请求对象
请求对象:http: //ksyun.cdn.com/home/test.dat
2.设置共享密钥
主密钥设为:ksyuncdnexp1,备用密钥设为:kscdnexp2
3.设置过期时间为1800s
4.设置时间戳时间
设访问时间为2017年11月20日00:00:00,单位转换为Unix时间戳秒,即1511107200
5.计算md5值
采用主密钥计算
key= ksyuncdnexp1
uri= /home/test.dat
timestamp=1511107200
md5hash=md5(ksyuncdnexp1/home/test.dat1511107200)=a9a32addf54d20952c7dde1c22fbb6ed
类型1请求url为:
http: //ksyun.cdn.com/home/test.dat?t=1511107200&k=a9a32addf54d20952c7dde1c22fbb6ed
类型2请求url为:
http: //ksyun.cdn.com/a9a32addf54d20952c7dde1c22fbb6ed/1511107200/home/test.dat
计算出来的md5hash值与请求中带的md5hash值一致,则鉴权通过。主备密钥有一个通过则认为鉴权通过。该url有效期为2017年11月20日00:00:00 - 2017年11月20日00:30:00。
1.进入CDN控制台【自助配置】页面,找到指定域名,点击【管理】进入域名配置页面。
2.点击【访问控制】模块,点击【时间戳+共享密钥防盗链】进入配置界面,选择时间戳防盗链类型,并输入密钥、过期时间,点击确定。
3.配置完成后如图
注意事项
请妥善保管密钥,避免密钥泄露导致安全防护失效。
1.测试正常时间鉴权请求
原始资源URL:http://example.com/123.txt,按当前时间2025-12-05 16:50:00生成时间戳及md5鉴权值。
t= 1764924600
k=md5(ksyuncdnexp1/123.txt1764924600)= 2ef47f7ef45812a8c621332e0ba73bea
拼接得出url为http://example.com/123.txt?t=1764924600&k=2ef47f7ef45812a8c621332e0ba73bea
测试请求可正常访问
2.测试过期时间鉴权请求
原始资源URL:http://example.com/123.txt,按过期时间2025-12-05 16:20:00生成时间戳及md5鉴权值。
t= 1764922800
k=md5(ksyuncdnexp1/123.txt1764922800)= 52e631c0cbfb3640380b1160e73749d8
拼接得出url为http://example.com/123.txt?t=1764922800&k=52e631c0cbfb3640380b1160e73749d8
测试请求拒绝访问
1.配置时间戳防盗链过期时间最长是多少
过期时间需为大于0的正整数,最大不超过31536000秒。
2.如何判断请求是被时间戳防盗链拒绝
响应状态码403,且响应头部中存在Ks-Deny-Reason: secure-time-check-md5-failed,代表请求被时间戳防盗链拒绝。
3.密钥是否有长度限制
共享密钥必须由大小写字母(a-Z)或者数字(0-9)组成,长度在6-128个字符之间。
4.是否支持其他鉴权方式
若您端上已有其他鉴权方式,需金山云CDN支持,请联系技术支持咨询。
纯净模式
