【最佳实践】巡检项:内容分发网络(CDN)开启URL鉴权

2022-04-22 17:50:46 浏览数 (1)

问题描述

一般情况下,在 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 中不能包含中文。

0 人点赞