TypeA¶
为防止站点资源被非法下载盗用,可选择 TypeA、TypeB、TypeC、TypeD 中的一种。本文介绍 TypeA。开启时只配置 typeA,其余模式置为 null。
算法说明¶
访问 URL 格式¶
注意
- 访问 URL 中不能包含中文。若 URL 含有中文,请提前做编码转换,计算签名时也使用编码后的路径。
- 不支持原地址已带
?参数的 URL 鉴权。 expireTime单位为秒,最大630720000。
signParam 不能以数字开头,示例值为 sign。
鉴权字段说明¶
| 字段 | 说明 |
|---|---|
| timestamp | 十进制 Unix 时间戳(秒)。TypeA 固定十进制。 |
| rand | 0~100 位随机字符串,大小写字母与数字。 |
| uid | 暂未使用,填 0。 |
| md5hash | authAlgorithm 为 md5 时 32 位,为 sha256 时 64 位,小写。md5hash = algorithm(uri-timestamp-rand-uid-secretKey),中间用 - 连接。uri 为资源路径,以 / 开头。 |
| secretKey | 主密钥,6~32 位大小写字母或数字。 |
| backupSecretKey | 备密钥,规则同主密钥,可不填。主密钥不匹配时再用备密钥计算。 |
鉴权逻辑说明¶
节点取出 timestamp,与 expireTime、当前时间比较:
timestamp + expireTime小于当前时间,返回 HTTP 403。- 未过期则用
secretKey计算签名,与 URL 中的值比较。不一致时再用backupSecretKey。仍不一致返回 HTTP 403。
fileExtensions 为 * 时全部文件鉴权。filterType 为 blacklist 时只鉴权列表内后缀,为 whitelist 时鉴权列表外后缀。
配置指南¶
参数与接口一致:
| 参数 | 示例 |
|---|---|
| authAlgorithm | md5 |
| secretKey | jUL9XKap9ZId7QjP |
| backupSecretKey | AfNFx5YP2oivNdux |
| signParam | sign |
| expireTime | 7200 |
| fileExtensions | ["*"] |
| filterType | whitelist |
生成过程
| 参数 | 值 |
|---|---|
| uri | /test.jpg |
| timestamp | 1790150400(2026-09-23 16:00:00,UTC+8) |
| rand | b3Nq8Lc2Wd |
| uid | 0 |
| secretKey | jUL9XKap9ZId7QjP |
拼接:/test.jpg-1790150400-b3Nq8Lc2Wd-0-jUL9XKap9ZId7QjP
md5hash = md5(...) = ad86205a26194b92fcf6789812ab9360
鉴权 URL
签名一致且未超过 1790150400 + 7200 则通过。authAlgorithm 改为 sha256 时,拼接串不变。
注意事项¶
缓存命中率¶
节点缓存时忽略 signParam。该规则只作用于鉴权范围内的文件,优先级高于缓存键规则。例如 signParam 为 sign、fileExtensions 为 jpg 且 filterType 为 blacklist,则 jpg 会忽略 sign。
回源策略¶
鉴权通过且未命中缓存时,回源保留 signParam。源站可忽略,或用同一 secretKey 再校验。