全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

通过时间戳防盗链防止异常访问

最近更新时间:2025-12-16 14:27:57

通过时间戳防盗链防止异常访问

场景说明

在CDN安全防护的场景中,若从IP、Refer、Url等维度均无明显可判断为异常的特征,可以考虑对域名开启时间戳防盗链,防止异常访问。

配置说明

时间戳防盗链全称【时间戳+共享密钥防盗链】,目的是使得每个请求的 url 都具有一定的“时效性”,过期后需要重新计算鉴权参数,从而提高内容分发安全性,防止异常访问。

  • 注意事项:
    启用时间戳防盗链需要修改业务请求URL生成逻辑,在生成URL时加入timestamp和md5hash。请求URL未改造完成的情况下,注意不要直接启用时间戳防盗链配置,会导致未带鉴权参数的请求403。

1.原理

CDN节点在验证请求时,首先将URL中timestamp的值与当前时间比较,如果timestamp的值小于当前时间,则认为过期,鉴权失败,拒绝访问,返回HTTP 403错误。如果timestamp的值大于当前时间,则用请求中md5hash的计算方法md5值(密钥+URI+时间戳),将这个值与请求中的md5hash值比对,比对一致则允许访问,否则认为鉴权失败,拒绝访问,返回HTTP 403错误。

2.鉴权说明

时间戳+共享密钥防盗链为全局配置,支持两种类型,可根据自身业务需要进行选择。

类型1

加密字符串在URL的参数中

示例:http://DomainName/DataFile/FileName?t=timestamp&k=md5hash

类型2

加密字符串在URL的路径中

示例:http://DomainName/md5hash/timestamp/DataFile/FileName

3.鉴权字段说明

timestamp:时间戳时间,默认为十进制Unix timestamp,单位秒;

key:密钥,支持主备情况,可自行设置,主密钥为必填项,备用密钥为选填,备用密钥最多可以设置4个;

uri:url中的资源路径path部分,不含协议及域名,不含参数,从/开始;

md5hash:鉴权值,md5hash=md5(key+uri+timestamp)

注意事项

  • md5鉴权因子中“+”为方便理解添加的文本分隔符,实际各鉴权因子间分隔符为空,参考下述示例说明。

4.示例说明

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。

配置步骤

步骤一:配置CDN时间戳防盗链

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支持,请联系技术支持咨询。

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈