最近更新时间:2024.01.12 15:10:33
首次发布时间:2022.02.09 10:17:26
本文档介绍如何在火山引擎内容分发网络中配置 Referer 防盗链。
Referer 是 HTTP 请求中的一个请求头,表示请求是来自哪个站点页面的。Referer 头部指示了源页面的 URL,包含协议,域名,端口,路径与查询字符串。端口是可选的。
Referer 头部的作用之一是防盗链。您可以为您的站点配置一个 Referer 黑名单以拒绝来自指定域名的请求。或者您可以为您的站点配置一个 Referer 白名单只允许接受来自指定域名的请求。如果您希望对具体的页面配置 Referer 黑白名单,您需要使用正则表达式。要在黑白名单使用正则表达式,请提交工单。
"空 Referer" 的定义是 Referer 头部没有值或者请求中不包含 Referer 头部。
登录 火山引擎内容分发网络控制台。
在左侧导航栏,点击 域名管理。
在 域名管理 页面,找到需要配置的域名,点击 管理。 页面上方的筛选条件和搜索框可以帮助您快速找到要配置的域名。
在域名页面上,点击 访问控制 页签。
在页面右上方,点击 编辑配置。
在 Referer 防盗链 下方,设置 状态 为 开启。
参照表格中内容进行配置。
在页面右上方,点击 提交编辑。
配置 | 说明 |
---|---|
类型 | 该配置有以下选项:
|
常规名单 | 输入一个或者多个名单条目。名单的长度不能超过 30,000 个字符。您可以输入一个或者多个域名(包括子域名和泛域名)和 IP 地址( 包括 IPv4 地址、IPv6 地址、CIDR 网段)。多个条目使用分号(;)或换行符分隔。您最多可以输入 1,000 个条目。需要注意的是,一个二级域名是单个域名,不是泛域名。一个泛域名不包含二级域名本身。例如:*.test.com 不包含二级域名 test.com,但是包含 www.test.com、a.a.test.com 等。 |
空 Referer 处理逻辑 |
|
忽略大小写 | 表示内容分发网络在使用 常规名单 匹配用户请求时是否区分大小写。 |
忽略 scheme 校验 | 表示匹配 常规名单 的 Referer 头部值是否必须以 说明 默认情况下,合法的 Referer 头部值必须符合 HTTP 协议规范。规范要求 URL 必须是以下格式之一:
对于该配置:
默认情况下,该配置是未启用的。 |
正则名单 | 表示一个或者多个正则表达式,用于匹配 Referer 头部值。您最多可以指定 100 个正则表达式。匹配不区分大小写,也不校验 scheme。 该参数为白名单功能。要使用该参数,请提交工单。 |
注意
如果一个请求的 Referer 头部值匹配了 常规名单 或者 正则名单,内容分发网络就认为是匹配。
我们通过以下名单配置为例,阐述 Referer 头部的匹配逻辑。如果一个请求未匹配白名单或者匹配了黑名单,内容分发网络会拒绝请求并返回 403 响应状态码。
名单配置 | 用户请求中的 Referer 头部 | 匹配结果 | 匹配逻辑说明 |
---|---|---|---|
| http://www.test.com/test.js | 是 | Referer 头部中的域名匹配名单。 |
http://www.test.com:80/test.js | 是 | ||
www.test.com | 见匹配逻辑说明 |
| |
2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b | |||
http://2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b | 否 | Referer 头部不符合 HTTP 协议规范。规范要求当 host 是一个 IPv6 地址时,该地址必须包裹在 [] 中。 | |
http://[2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b] | 是 | Referer 头部中的 IP 地址匹配名单。 | |
http://aaa.test.com | 是 | Referer 头部中的多级域名匹配名单中的泛域名条目。泛域名是包含多级域名的。 | |
http://ss.aaa.test.com | 是 | ||
http://test.com | 否 | Referer 头部中的二级域名不匹配名单中的泛域名条目。原因是泛域名不包含二级域名本身。 |