问题描述
一般情况下,在 CDN 上分发的内容默认为公开资源,用户拿到 URL 后均可进行访问,如果不进行任何形式的鉴权,就可能会被非法站点恶意盗刷盗用,产生损失。我们特别推荐相关盗刷敏感的业务一定开启url鉴权,防止非法网站盗用。
解决方案
为了减少被盗用的风险, CDN提供了多种防盗链技术可供使用, 比如通过 referer 黑白名单、IP 黑白名单、UA黑白名单、IP 访问限频等访问控制策略。
这里介绍更为安全的URL鉴权的解决方案,URL鉴权是指用户按照指定的签名方式对于特定的URL增加鉴权认证,可以通过自行配置校验鉴权URL中的加密串和时间戳。
腾讯云提供4种URL鉴权方案,访问url和算法说明如下:
类型 | 访问URL格式 | 算法说明 |
---|---|---|
typeA | http://DomainName/Filename?sign=timestamp-rand-uid-md5hash | timestamp:十进制(UNIX 时间戳)。 rand:随机字符串,0 - 100位随机字符串,由大小写字母与数字组成。 uid:0 md5hash:MD5(文件路径-timestamp-rand-uid-自定义密钥) |
typeB | http://DomainName/timestamp/md5hash/FileName | timestamp:格式为 YYYYMMDDHHMM。 md5hash:MD5(自定义密钥 timestamp 文件路径) |
typeC | http://DomainName/md5hash/timestamp/FileName | timestamp:十六进制(UNIX 时间戳)。 md5hash:MD5(自定义密钥 文件路径 timestamp) |
typeD | http://DomainName/FileName?sign=md5hash&t=timestamp | timestamp:十进制 / 十六进制(UNIX 时间戳)可选。 md5hash:MD5(自定义密钥 文件路径 timestamp) |
注意:
开启了 TypeA和TypeD 鉴权模式的域名,访问 URL 会携带鉴权参数,在 CDN 节点进行资源缓存时,会自动忽略对应的参数进行缓存,不会影响域名缓存命中率。并且回源的时候格式与访问请求保持一致,会保留 sign /t参数
开启了 TypeB ,typeC鉴权模式的域名,访问 URL 路径中会携带签名及时间戳,在 CDN 节点进行资源缓存时,会自动忽略鉴权路径进行缓存,不会影响域名缓存命中率。并且回源的时候会自动去掉路径中的 md5hash 及 timestamp 路径。
1. 查看配置
点击『域名管理』--》选中『访问控制』Tab页面, 可以看到『鉴权配置』这一项, 如果配置状态开启了,则说明配置了URL鉴权, 可以详细查看鉴权类型。 如果没有开启则是如下灰色的状态。
2. 配置鉴权
step1. 选择模式。 这几种模式的具体区别如上表格所述,可以根据业务需要进行选择
step2.设置参数。注意有效时间不要设置过短,系统会通过请求路径中 timestamp 值,加上配置的有效时间,与当前时间进行对比,判定请求是否过期。过期会返回403.
step3.配置鉴权对象。鉴权的对象可以是所有文件,也可以是指定后缀的文件鉴权或不鉴权
注意事项
访问 URL 中不能包含中文。