
# 配置防盗链规则拦截/放行指定Referer
配置referer黑/白名单，通过设置HTTP Request Header中referer字段值的过滤策略，对访问者身份进行识别和过滤，实现限制访问来源的目的。
#### 背景信息
HTTP Request Header中的Referer字段值代表了当前页面的请求来源，CDN节点可以通过Referer跟踪来源，对来源进行识别和判断。
用户访问加速域名网站内容时，访问请求到达CDN节点后，CDN节点会根据配置的Referer黑/白名单，对访问者的身份进行识别和过滤，符合规则的可以顺利访问到该内容。如果不符合规则，该访问请求将会被禁止，返回403禁止访问的错误信息。
图1referer原理图   
![](https://support.huaweicloud.com/usermanual-cdn/zh-cn_image_0000002337817605.jpg "点击放大")
#### 注意事项
- 防盗链功能默认关闭。
- referer黑名单与referer白名单二选一，不可同时配置。
- referer防盗链功能基于HTTP请求头中的Referer字段设置访问控制规则。客户端请求命中黑名单被拦截时会产生少量流量/带宽费用，全站加速的域名还会产生请求数费用。
 
#### 操作步骤
1. 登录[CDN控制台](https://console.huaweicloud.com/cdn/?locale=zh-cn#/cdn/overview)。
2. 在左侧菜单栏中，选择"域名管理"。
3. 在域名列表中，单击需要修改的域名，进入"概览"页面。
4. 选择"访问控制"页签。
5. 在防盗链配置模块，打开开关，进入"编辑防盗链"页面。
   图2配置防盗链   
   ![](https://support.huaweicloud.com/usermanual-cdn/zh-cn_image_0000002586172039.png "点击放大") 

6. 选择"类型"，根据业务需要配置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 说明： 后台有特殊配置的域名暂不支持配置多个"\*"。    |
      
   
7. 在"规则"文本框处，输入要禁止或允许访问的域名。
8. 单击"确定"，完成防盗链配置。
9. （可选）关闭防盗链配置。
   - 关闭"状态"开关即可关闭防盗链配置，此时所有配置将被清空，下次启用防盗链功能时需要重新配置相关参数。
    
 
#### 配置验证
配置referer规则后，客户端请求将按照配置的规则放通或阻断。您可以使用curl命令测试配置是否成功。
**验证场景**：配置referer黑名单，不包含空referer，规则值为example.com。
**预期结果**：referer中携带http(s)://example.com的请求将被拒绝，其他非黑名单内的请求将被放通。
1. 携带主域名的referer访问测试，命令curl -e http://example.com -I CDN加速域名。 ![](https://support.huaweicloud.com/usermanual-cdn/zh-cn_image_0000002354997509.png "点击放大")
   
2. 携带子域名的referer访问测试，命令curl -e http://abc.example.com -I CDN加速域名。 ![](https://support.huaweicloud.com/usermanual-cdn/zh-cn_image_0000002321043188.png "点击放大")
   
3. 携带其他域名的referer访问测试，命令curl -e http://axample.com -I CDN加速域名。 ![](https://support.huaweicloud.com/usermanual-cdn/zh-cn_image_0000002320885220.png "点击放大")
   
4. 空referer访问测试，命令curl -e " " -I CDN加速域名。 ![](https://support.huaweicloud.com/usermanual-cdn/zh-cn_image_0000002320885640.png "点击放大")
   
5. 仅域名的referer访问测试，命令curl -e axample.com -I CDN加速域名。 ![](https://support.huaweicloud.com/usermanual-cdn/zh-cn_image_0000002321046012.png "点击放大")
   
 
#### 配置示例
1. 加速域名为www.example.com，该加速域名配置了referer白名单规则：包含空referer，白名单内容为www.test.com，如下图所示。 ![](https://support.huaweicloud.com/usermanual-cdn/zh-cn_image_0000001824552737.png)
   
   - 用户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，如下图所示。 ![](https://support.huaweicloud.com/usermanual-cdn/zh-cn_image_0000001824553889.png)
   
   - 用户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将会正常返回内容。
    
 
#### 相关文档
- 调用接口修改防盗链规则请参考：[修改域名全量配置接口 - UpdateDomainFullConfig](https://support.huaweicloud.com/api-cdn/UpdateDomainFullConfig.html)。
- [如果在OBS桶里面配置了Referer的黑白名单防盗链，CDN的访问会按照OBS桶的Referer规则生效吗？](https://support.huaweicloud.com/cdn_faq/cdn_faq_0263.html)
- [防范恶意流量盗刷](https://support.huaweicloud.com/bestpractice-cdn/cdn_01_0319.html)
 
