更新时间:2025-06-30 GMT+08:00

配置防盗链

配置referer黑/白名单,通过设置HTTP Request Header中referer字段值的过滤策略,对访问者身份进行识别和过滤,实现限制访问来源的目的。

背景信息

HTTP Request Header中的Referer字段值代表了当前页面的请求来源,CDN节点可以通过Referer跟踪来源,对来源进行识别和判断。

用户访问加速域名网站内容时,访问请求到达CDN节点后,CDN节点会根据配置的Referer黑/白名单,对访问者的身份进行识别和过滤,符合规则的可以顺利访问到该内容。如果不符合规则,该访问请求将会被禁止,返回403禁止访问的错误信息。

图1 referer原理图

注意事项

  • 防盗链功能默认关闭。
  • referer黑名单与referer白名单二选一,不可同时配置。
  • referer防盗链功能基于HTTP请求头中的Referer字段设置访问控制规则。客户端请求命中黑名单被拦截时会产生少量流量/带宽费用,全站加速的域名还会产生请求数费用。

操作步骤

  1. 登录华为云控制台,在控制台首页中选择“ CDN与智能边缘 > 内容分发网络 CDN”,进入CDN控制台。
  2. 在左侧菜单栏中,选择域名管理
  3. 在域名列表中,单击需要修改的域名或域名所在行的“设置”,进入域名配置页面。
  4. 选择“访问控制”页签。
  5. 在防盗链配置模块,单击“编辑”,系统弹出“配置防盗链”对话框,如下图所示。
    图2 配置防盗链
  6. 打开“状态”开关按钮,开启该配置项。
  7. 选择“类型”,根据业务需要配置referer相关参数,具体参数说明参见下表。
    表1 参数说明

    参数

    说明

    输入规则

    空referer

    空referer指HTTP请求头中referer字段内容为空,或者一个HTTP请求中根本不包含referer字段。

    设置黑名单时,勾选拒绝空referer访问,此时将拒绝空referer访问。

    设置白名单时,勾选允许空referer访问,此时将允许空referer访问。

    说明:

    空referer指一个HTTP请求中的referer字段值为空或不包含referer字段(规则中输入“null”表示referer字段的值是null,不等于空referer)。

    /

    referer白名单

    • 当请求的referer内容匹配白名单中的设置时,用户可以访问到请求的内容。否则,CDN返回403禁止访问的错误信息。
    • 当勾选了“包含空referer”后,如果用户发起了此类空referer的访问请求,用户可以访问到请求的内容。
    • 支持输入域名(不包含协议、路径和参数)或IP地址,域名、IP地址可混合输入,以“;”进行分隔。
    • 支持添加泛域名。
    • 最多可用两个“*”,不能连续出现且不能出现在末尾。
    • 支持添加带端口的域名、IP,端口最大值为65535。
    • 输入的域名、IP地址总数不能超过500个。

      示例:www.example.com:443;*.test.com;192.168.0.0

      说明:

      后台有特殊配置的域名暂不支持配置多个“*”。

    referer黑名单

    • 当请求的referer内容匹配黑名单中的设置时,用户不能访问请求的内容,CDN节点返回403禁止访问的错误信息。否则,用户可以访问到请求的内容
    • 当勾选了“包含空referer”后,如果用户发起了此类空referer的访问请求,用户不能访问请求的内容,CDN节点返回403禁止访问的错误信息。
    • 支持输入域名(不包含协议、路径和参数)或IP地址,域名、IP地址可混合输入,以“;”进行分隔。
    • 不支持配置具体URL,如example.com/abc/01.jpg。
    • 支持添加泛域名。
    • 最多可用两个“*”,不能连续出现且不能出现在末尾。
    • 支持添加带端口的域名、IP,端口最大值为65535。
    • 输入的域名、IP地址总数不能超过500个。

      示例:www.example.com:443;*.test.com;192.168.0.0

      说明:

      后台有特殊配置的域名暂不支持配置多个“*”。

  8. 在“规则”文本框处,输入要禁止或允许访问的域名。
  9. 单击“确定”,完成防盗链配置。
  10. (可选)关闭防盗链配置。
    • 关闭“状态”开关即可关闭防盗链配置,此时所有配置将被清空,下次启用防盗链功能时需要重新配置相关参数。

配置验证

配置referer规则后,客户端请求将按照配置的规则放通或阻断。您可以使用curl命令测试配置是否成功。

验证场景:配置referer黑名单,不包含空referer,规则值为example.com。

预期结果:referer中携带http(s)://example.com的请求将被拒绝,其他非黑名单内的请求将被放通。

  1. 携带主域名的referer访问测试,命令curl -e http://example.com -I CDN加速域名。

  2. 携带子域名的referer访问测试,命令curl -e http://abc.example.com -I CDN加速域名。

  3. 携带其他域名的referer访问测试,命令curl -e http://axample.com -I CDN加速域名。

  4. 空referer访问测试,命令curl -e “ ” -I CDN加速域名。

  5. 仅域名的referer访问测试,命令curl -e axample.com -I CDN加速域名。

配置示例

  1. 加速域名为www.example.com,该加速域名配置了referer白名单规则:包含空referer,白名单内容为www.test.com,如下图所示。

    • 用户1:请求URL:https://www.example.com/file.html,该请求携带的referer字段值为空,CDN将会正常返回内容。
    • 用户2:请求URL:https://www.example.com/file.html,该请求携带的referer字段值为:www.test.com,CDN将会正常返回内容。
    • 用户3:请求URL:https://www.example.com/file.html,该请求携带的referer字段值为:www.abc.com,CDN节点将会返回403禁止访问的错误信息。
  2. 加速域名为www.example01.com,该加速域名配置了referer黑名单规则:包含空referer,黑名单内容为www.test01.com,如下图所示。

    • 用户1:请求URL:https://www.example01.com/file.html,该请求携带的referer字段值为空,CDN节点将会返回403禁止访问的错误信息。
    • 用户2:请求URL:https://www.example01.com/file.html,该请求携带的referer字段值为:www.test01.com,CDN节点将会返回403禁止访问的错误信息。
    • 用户3:请求URL:https://www.example01.com/file.html,该请求携带的referer字段值为:www.bcd.com,CDN将会正常返回内容。