You need to enable JavaScript to run this app.
导航
Referer 黑白名单
最近更新时间:2024.09.25 13:59:48首次发布时间:2022.02.09 10:17:26

本文档介绍如何在火山引擎内容分发网络(CDN)中配置 Referer 黑白名单。

概述

Referer 是用户请求中的一个请求头,表示请求是来自哪个站点页面的。Referer 头部指示了源页面的 URL,包含协议,域名,端口,路径与查询字符串。端口是可选的。

Referer 头部的作用之一是防盗链。默认情况下,您在 Referer 名单中配置的条目仅仅是域名和 IP 地址。在收到请求时,CDN 尝试将这些条目与 Referer 头部中的域名或 IP 地址进行匹配。如果您希望 CDN 尝试对 Referer 头部中的路径或查询字符串进行匹配,您需要在名单中指定正则表达式。参见 配置说明规则内容 配置的描述。

空 Referer

"空 Referer" 的定义是 Referer 头部没有值或者请求中不包含 Referer 头部。

功能优先级

CDN 提供的一系列访问控制功能有不同的优先级。在 CDN 处理用户请求时,这些功能按优先级对请求生效。参见 访问控制功能的优先级

操作步骤

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

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

  3. 域名管理 页面,找到需要配置的域名,点击 管理

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

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

  6. Referer 黑白名单 下方,设置 状态 为启用。

  7. 参照 配置说明 进行配置。

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

alt

配置说明

配置说明

类型

表示名单的类型。该配置有以下选项:

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

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

配置方式

表示如何指定名单中的条目。该配置有以下选项:

  • 域名配置:表示在 "Referer 黑白名单" 的配置中指定名单中的条目。

  • 全局配置:表示指定一个包含条目的 全局配置。全局配置用来定义大量条目的。一个全局配置最多可以包含 4,000 个条目。要使用全局配置,请 提交工单

规则内容

表示名单中条目的类型。该配置有以下选项:

  • 常规名单:表示名单中的每个条目是一个 IP 地址或者域名。

  • 正则名单:表示名单中的每个条目是一个正则表达式,用来匹配请求中的 Referer 头部。要指定该选项,请 提交工单

  • 空 Referer:表示 "空 Referer" 的配置。

    • 如果 类型黑名单,勾选该选项表示 CDN 拒绝 Referer 为空的请求,不勾选该选项表示 CDN 接受 Referer 为空的请求。

    • 如果 类型白名单,勾选该选项表示 CDN 接受 Referer 为空的请求,不勾选该选项表示 CDN 拒绝 Referer 为空的请求。

常规名单(输入框)

表示一个或者多个名单条目。如果您在 规则内容 处勾选了 常规名单,该输入框会出现。

输入要求
名单最多可以包含 1,000 个条目,总长度不能超过 30,000 个字符。您可以输入一个或者多个域名和 IP 地址。域名可以是泛域名。IP 地址可以是 IPv4 地址、IPv6 地址、IPv4 CIDR 地址或者 IPv6 CIDR 地址。多个条目之间使用分号(;)或换行符分隔。

说明

如果您需要输入的条目数量超过 1,000,参考 全局配置

关于泛域名和子域名

  • 泛域名不包含域名本身。例如:*.example.com 不包含二级域名 example.com,但是包含 www.example.coma.a.example.com 等。

  • 子域名的级别数量没有限制。例如,您可以指定一个子域名为 aaa.bbb.ccc.ddd.eee.fff.ggg.eee.example.com。关于 Referer 名单的匹配逻辑,参见 Referer 匹配逻辑

忽略大小写表示 CDN 在尝试将名单中的条目与请求中的 Referer 头部匹配时,匹配过程是否是大小写敏感的。勾选该选项示匹配过程是大小写不敏感的。

忽略 scheme 校验

表示在尝试使用名单中条目匹配 Referer 头部前,CDN 是否校验 Referer 头部的合法性。

  • 如果您勾选该选项,CDN 不会校验 Referer 头部的合法性。
  • 如果您不勾选该选项,CDN 会校验 Referer 头部的合法性。如果一个请求的 Referer 头部不合法,无论您配置的是黑名单还是白名单,CDN 都会拒绝该请求。

关于 Referer 头部合法性
一个合法的 Referer 头部必须符合 HTTP 协议规范。规范要求 URL 必须是以下格式之一:

  • scheme://host:port/path

  • scheme://host:port/

  • scheme://host:port

  • scheme://host/path

  • scheme://host/

  • scheme://host

正则名单(输入框)

表示一个或者多个正则表达式,用于匹配 Referer 头部值。您最多可以指定 100 个正则表达式。如果您在 规则内容 处勾选了 正则名单,该输入框会出现。

当 CDN 尝试使用正则表达式来匹配 Referer 头部时,匹配过程是大小写不敏感的,并且不会校验 Referer 头部的合法性。

Referer 匹配逻辑

我们通过以下名单配置为例,阐述 Referer 头部的匹配逻辑。如果一个请求未匹配白名单或者匹配了黑名单,CDN 会拒绝请求并返回 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 头部中的二级域名不匹配名单中的泛域名条目。原因是泛域名不包含二级域名本身。