You need to enable JavaScript to run this app.
导航

配置 Referer 防盗链

最近更新时间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 头部没有值或者请求中不包含 Referer 头部。

操作步骤

  1. 登录 火山引擎内容分发网络控制台

  2. 在左侧导航栏,点击 域名管理

  3. 域名管理 页面,找到需要配置的域名,点击 管理。 页面上方的筛选条件和搜索框可以帮助您快速找到要配置的域名。

  4. 在域名页面上,点击 访问控制 页签。

  5. 在页面右上方,点击 编辑配置

  6. Referer 防盗链 下方,设置 状态开启

  7. 参照表格中内容进行配置。

  8. 在页面右上方,点击 提交编辑

alt

配置说明

类型

该配置有以下选项:

  • 白名单:当您只想允许来自某些站点的请求时,可以配置一个白名单。如果用户的请求不匹配白名单,内容分发网络拒绝请求并且响应 403 状态码。

  • 黑名单:当您只想阻止来自某些站点的请求时,可以配置一个黑名单。如果用户的请求匹配了黑名单,内容分发网络拒绝请求并且响应 403 状态码。

常规名单

输入一个或者多个名单条目。名单的长度不能超过 30,000 个字符。您可以输入一个或者多个域名(包括子域名和泛域名)和 IP 地址( 包括 IPv4 地址、IPv6 地址、CIDR 网段)。多个条目使用分号(;)或换行符分隔。您最多可以输入 1,000 个条目。需要注意的是,一个二级域名是单个域名,不是泛域名。一个泛域名不包含二级域名本身。例如:*.test.com 不包含二级域名 test.com,但是包含 www.test.com、a.a.test.com 等。

子域名可以包含的级别数量没有限制。 关于 Referer 名单的匹配逻辑,参见 Referer 匹配逻辑

空 Referer 处理逻辑

  • 如果 类型黑名单,该选项是 允许空 Referer 访问 CDN 资源。勾选该选项表示允许 空 Referer 的请求 访问您的加速域名。
  • 如果 类型白名单,该选项是 不允许空 Referer 访问 CDN 资源。勾选该选项表示不允许 空 Referer 的请求 访问您的加速域名。
忽略大小写表示内容分发网络在使用 常规名单 匹配用户请求时是否区分大小写。

忽略 scheme 校验

表示匹配 常规名单 的 Referer 头部值是否必须以 HTTP 或者 HTTPS 开头。

说明

默认情况下,合法的 Referer 头部值必须符合 HTTP 协议规范。规范要求 URL 必须是以下格式之一:

  • scheme://host:port/path

  • scheme://host:port/

  • scheme://host:port

  • scheme://host/path

  • scheme://host/

  • scheme://host

对于该配置:

  • 启用后,内容分发网络会认为 www.example.com 是合法的 Referer 头部值,会尝试将其与 常规名单 中的条目匹配。

  • 未启用时,内容分发网络会认为 www.example.com 是非法的 Referer 头部值,即使 www.example.com常规名单 中,内容分发网络也判定为不匹配 常规名单

默认情况下,该配置是未启用的。

正则名单表示一个或者多个正则表达式,用于匹配 Referer 头部值。您最多可以指定 100 个正则表达式。匹配不区分大小写,也不校验 scheme。

该参数为白名单功能。要使用该参数,请提交工单

注意

如果一个请求的 Referer 头部值匹配了 常规名单 或者 正则名单,内容分发网络就认为是匹配。

Referer 匹配逻辑

我们通过以下名单配置为例,阐述 Referer 头部的匹配逻辑。如果一个请求未匹配白名单或者匹配了黑名单,内容分发网络会拒绝请求并返回 403 响应状态码。

名单配置用户请求中的 Referer 头部匹配结果匹配逻辑说明
  • www.test.com

  • 1.1.1.1

  • 2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b

  • *.test.com

http://www.test.com/test.js

Referer 头部中的域名匹配名单。

http://www.test.com:80/test.js

www.test.com

见匹配逻辑说明

  • 如果未启用 忽略 scheme 校验,结果是不匹配。原因是 Referer 头部不符合 HTTP 协议规范。

  • 如果启用了 忽略 scheme 校验,结果是匹配。

2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b
http://2001:0db8:3c4d:0015:0000:0000:1a2f:1a2bReferer 头部不符合 HTTP 协议规范。规范要求当 host 是一个 IPv6 地址时,该地址必须包裹在 [] 中。
http://[2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b]Referer 头部中的 IP 地址匹配名单。
http://aaa.test.comReferer 头部中的多级域名匹配名单中的泛域名条目。泛域名是包含多级域名的。
http://ss.aaa.test.com
http://test.comReferer 头部中的二级域名不匹配名单中的泛域名条目。原因是泛域名不包含二级域名本身。