课程名称:计算机网络应用 核心摘要:本讲围绕阿里云 CDN 域名管理下的两大核心模块展开——访问控制(防盗链、IP/UA 黑白名单、URL 鉴权)与性能优化(页面优化、Gzip/Brotli 压缩、参数过滤、Range 回源、视频相关配置)。通过四类身份识别手段构建安全防护,通过压缩与缓存策略提升命中率、节约带宽,是 Web 应用安全与加速的重点内容。
- 访问控制:CDN 的一种自我保护机制,"防的是小人"。通过对用户身份的识别与过滤,拒绝非法/恶意用户访问 CDN 资源,提升 CDN 安全性。
- 四类身份识别手段:
- Referer 防盗链
- IP 黑白名单
- UA(User-Agent)黑白名单
- URL 鉴权
- 黑白名单互斥原则:黑名单与白名单为单选互斥关系,同一时刻仅一种生效;命中非法规则返回 403。
- 性能优化目标:提升 CDN 命中率、节约带宽(带宽计费)、让 CDN 更高效。默认情况下各项优化均关闭,需根据实际情况开启。
- 关键约束:若源站存在 MD5 校验机制,则不可启用会修改文件内容的优化项(页面优化、压缩),否则 MD5 值不一致导致校验失败——即"以安全牺牲效率"。
| 功能 | 作用原理 | 配置要点 | 备注 |
|---|
| Referer 防盗链 | 基于 HTTP Referer 字段识别请求来源 | 配置 Referer 黑/白名单;建议用白名单;支持通配符(如 *.godisaman.com);多个值用回车符分隔 | 可伪造,安全性较弱,需配合 URL 鉴权使用 |
| URL 鉴权 | 对 URL 加密,URL 中包含权限认证信息 | 客户端提供加密 URL → 用户带加密 URL 请求加速节点 → 节点验证权限信息 → 合法则放行,非法则拒绝;配置主 Key / 备用 Key(即盐值),越长越安全;鉴权类型不公开 | 保护用户内购资源不被非法下载/盗用,比 Referer 更可靠 |
| IP 黑白名单 | 基于客户端 IP 过滤 | 格式为 IP地址/子网掩码;最多 100 个;特定用户开放用白名单,封禁攻击者用黑名单 | 失败请求返回 403,并记录于 CDN 日志(日志管理中查看) |
| UA 黑白名单 | 基于 User-Agent(用户代理/浏览器信息)过滤 | 针对特定 UA 攻击拉入黑名单;支持通配符;多个值用回车符分隔 | 白名单模式下仅符合规则的 UA 才可访问 |
| 功能 | 作用原理 | 配置要点 | 备注 |
|---|
| 页面优化 | 去除 HTML 页面中冗余内容(注释、重复空白符),使文档压缩为一行 | 默认关闭,按需开启 | 源站有 MD5 校验时不可开启 |
| 智能压缩(Gzip) | 对所有静态文件进行 Gzip 压缩 | 建议开启 | 源站有 MD5 校验时不建议开启 |
| Brotli 压缩 | Google 于 2015 年推出的压缩算法 | 可与智能压缩同时开启;同时开启时优先使用 Brotli | 见下方对比分析 |
| 保留参数 | 回源时保留 URL 问号后的参数 | 参数必须完全一致才命中缓存 | 第二次请求参数不同 → 仍需回源 |
| 过滤参数 | 删除指定参数(用空格隔开),忽略问号后内容 | 开启后问号后参数无效 | 提升缓存命中率,第二次请求无需回源 |
| Range 回源 | 客户端通知源站只返回指定范围的部分内容(分片回源) | 视频场景建议开启 | 视频只需读取一片即可 |
| 拖拽播放 | 支持音频/视频拖拽进度条,缓存部分内容 | 默认不开启,可开启 | 用于指定音频场景 |
| 听视频 | 音频与视频分开,仅保留音频,丢弃视频画面 | 按需开启 | 节省流量 |
| 视频试看 | 仅拉取可试看的片源范围 | 非会员仅返回试看片段 | 类似优酷非会员试看时长限制 |
| 对比项 | Brotli | Gzip(智能压缩) |
|---|
| 推出方 | Google(2015) | 通用 |
| 压缩性能 | 高于 Gzip 17%~25% | 基准 |
| 压缩级别 1(最低) | 压缩率已超过 Gzip 最高等级 9 | 等级 9 为最高 |
| 综合评价 | 性能远高于 Gzip | 通用兼容性好 |
# 白名单(互斥,单选生效)
# 仅允许来自指定域名的请求访问 CDN 资源
*.godisaman.com
*.yj.com
# 说明:
# 1. 支持通配符 *(星号匹配任意子域)
# 2. 多个域名使用回车符分隔
# 3. 命中规则外的请求返回 403
# 鉴权配置
主 Key: <自定义长字符串> # 越长越安全,相当于盐值
备用 Key: <自定义长字符串> # 主 Key 失效时启用
鉴权类型: 不公开(未明示) # 加密算法不对外公开
# 流程:
# 1. 客户端生成含权限认证信息的加密 URL
# 2. 用户使用加密 URL 请求加速节点
# 3. 加速节点验证 URL 中的权限信息
# 4. 合法 → 放行;非法 → 拒绝
# 黑名单:封禁攻击者 IP(最多 100 条)
# 格式:IP地址/子网掩码
192.168.1.100/32
10.0.0.0/24
# 白名单:仅允许特定用户访问特殊资源
203.0.113.5/32
# 场景:请求图片资源 1.jpg,带参数 test
# 第一次请求(无缓存,需回源):
http://edu.lagou.com/1.jpg?test=1 # 回源并缓存到 CDN 节点
# 第二次请求(参数变化):
http://edu.lagou.com/1.jpg?test=2
# 保留参数模式:参数不同 → 视为不同资源 → 再次回源
# 过滤参数模式:忽略 ?test=2 → 命中已缓存 → 无需回源(命中率提升)
- 考点 1:访问控制的四种手段及其作用对象(Referer、IP、UA、URL 鉴权)。
- 考点 2:黑白名单互斥关系——同一时刻仅一种生效,非法返回 403。
- 考点 3:Referer 可伪造,需配合 URL 鉴权使用才能保护高价值资源。
- 考点 4:Brotli 与 Gzip 同时开启时优先 Brotli;Brotli 最低级别压缩率已超过 Gzip 最高级别,性能高 17%~25%。
- 考点 5:MD5 校验冲突——页面优化/压缩会改变文件内容,源站有 MD5 校验时不可开启。
- 考点 6:过滤参数提升命中率,保留参数降低命中率(参数变化需重新回源)。
- 易错点:Referer 多值用回车符分隔;UA 多值同样用回车符(非逗号)分隔。
- 面试题:如何在不影响合法用户的前提下防止资源被盗链?(Referer + URL 鉴权 + IP 黑名单组合策略)
- 安全设置模块(如 WAF 防火墙、频次控制)需单独购买服务,具体费用与配置方式后续课程是否展开?
- 刷新预热与 URL 列表维护在实际开发中需长期维护,其自动化运维方案如何设计?
- Brotli 压缩算法的内部实现原理(为何压缩率优于 Gzip)本课未深入,可作为扩展学习内容。
- TS 鉴权与 URL 鉴权的区别及适用场景(视频流 HLS 场景)待补充。
- 听视频、拖拽播放等功能的具体文档配置细节需结合阿里云 CDN 官方文档进一步实践。