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

Referer 防盗链

最近更新时间2023.12.26 15:00:07

首次发布时间2023.03.29 17:46:08

Referer 是 HTTP 请求头的一个字段,表示请求的来源页面(协议+域名+查询参数)。您可以通过对访问用户 HTTP Request Header 中 referer 字段的值设置访问控制策略,从而限制访问来源,避免恶意用户盗刷。

示例:您在 https://www.example.com/test.html 页面上点击了 https://www.volcengine.com 的链接。在这个 HTTP 请求头中,Referer 为 https://www.example.com/test.html

背景信息

  • Referer:Referer 的作用之一是作为防盗链使用。您可以通过 Referer 黑名单配置您的站点需要拒绝来自指定域名的请求或者通过白名单配置您的站点只允许来自特定域名的请求。

  • 空 Referer:当一个请求不是由点击某个链接所触发,则此时该请求的 Referer 字段值为空,或者请求头中不包含 Referer 字段。比如您在浏览器里面直接输入 https://www.volcengine.com 进行访问。此时,请求头中就不包含 Referer 字段。如果允许 Referer 为空,表示您的站点允许浏览器直接访问。

操作步骤

说明

若您的 Referer 配置项由于某些原因(如启用了非标配置)被锁定,锁定后界面将展示锁定图标。您可提交工单联系技术支持修改配置。

  1. 登录 veImageX 控制台,单击服务管理。选择相应的图片服务,单击基础配置

  2. 分发配置页签的域名信息中,单击域名的管理按钮。

  3. 在配置页面,单击访问控制并进入页面后。选择防盗链配置,单击编辑按钮,并按照下表配置说明配置防盗链。

    配置说明
    状态默认关闭。开启后,支持配置黑名单或者白名单。

    类型

    选择黑白名单类型,单选。

    • 白名单:指定允许访问您站点的域名。当您只想允许来自某些站点的请求时,可以配置白名单。
    • 黑名单:指定不允许访问您站点的域名。当您只想阻止来自某些站点的请求时,可以配置黑名单。

    在配置黑名单或者白名单后,如果一个请求不匹配规则,缓存节点拒绝返回该请求信息,并直接返回 403 响应状态码。

    包含空 Referer表示是否允许不包含 Referer 或者 Referer 字段值为空(如浏览器请求)的请求来访问资源。

    规则

    支持域名或 IP 地址。

    • 支持域名或 IP 地址混合输入,支持添加泛域名。例如:配置*.test.imagex.com,可以匹配到a.test.imagex.comb.test.imagex.com等;
    • 支持最多不超过 100 个;
    • 多个输入时,以;进行分割。

    正则表达式

    请在打开开关后,填写 Referer 的正则表达式列表。
    仅支持填写 IPv4 和 IPv6 格式的 IP 地址,参数长度范围为(1,1024)。不支持域名、泛域名、CIDR 网段。

  4. 单击确定按钮,保存配置。

Referer 匹配逻辑

在您设置了 Referer 黑名单或 Referer 白名单后,veImageX 会使用 Referer 规则匹配用户请求中 Referer 字段的内容。匹配时不区分大小写。如果 Referer 字段的内容满足以下所有条件,则匹配成功。不然,则匹配失败。具体匹配规则以下表为例。

Referer 名单配置用户请求中 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

Referer 头不符合 HTTP 协议规范。规范要求 URL 必须是以下格式之一:

  • scheme://host:port/path
  • scheme://host:port/
  • scheme://host:port
  • scheme://host/path
  • scheme://host/
  • scheme://host
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 头中的二级域名不匹配名单中的泛域名条目。原因是泛域名不包含二级域名本身。

OpenAPI

您可以通过调用 OpenAPI 更新 Referer 防盗链配置,具体请参考 UpdateRefer

常见问题

什么情况下 Referer 字段的内容会导致结果不匹配?

  • 假设 Referer 规则是 www.example.com:8888。此时,如果请求头部 Referer 携带值的内容是 www.example.com:8888,veImageX 判定为不匹配。原因是 Referer 头部携带值的内容不符合规范。
  • 假设 Referer 规则是 370e:b1:e411:6::1a。此时,如果 Referer 字段的内容是 http://370e:b1:e411:6::1a:8090/,veImageX 判定为 Referer 配置规则不匹配。

不匹配时的响应状态码分别是什么?

如果结果是不匹配,veImageX 返回的状态码如下所示:

  • 如果配置的是白名单,有以下情况:

    • 如果 Referer 头部的值不符合规范,状态码是 403;
    • 如果 Referer 配置规则不匹配,状态码是 403。
  • 如果配置的是黑名单,有以下情况:

    • 如果 Referer 头部的值不符合规范,状态码是 200;
    • 如果 Referer 配置规则不匹配,状态码是 200。