Referer防盗链基于HTTP请求头中的Referer字段,通过设置黑白名单来控制访问,防止资源被非法盗用。配置后,CDN会根据名单识别请求身份,允许或拒绝访问请求。
背景信息
Referer是HTTP请求头的一部分,携带了请求来源地址信息(协议、域名、查询参数),用于识别请求来源。
Referer防盗链是一种服务器端访问控制机制,防止未经授权的网站盗用服务器资源。当用户从一个网页点击链接访问另一个网页时,浏览器会在HTTP请求头中添加Referer字段,记录用户的来源网页。
阿里云CDN的Referer防盗链功能默认不启用,即任何网站均可访问您的资源。
将域名添加到Referer黑名单或白名单后,CDN会将该域名的泛域名加入规则名单。例如,填写
aliyundoc.com
,最终生效的是*.aliyundoc.com
,即所有子级域名都会生效。当域名进行Range请求时,第二次请求会被浏览器加上Referer头,因此需要将该域名设置为Referer白名单。
使用场景
Referer防盗链主要用于保护网站的资源不被其他网站直接引用或盗用,常见的使用场景包括:
版权保护:某些网站的内容受版权保护,Referer防盗链可以限制只有授权网站访问这些内容,保护版权。
防止热链盗用:Referer防盗链确保资源只能在特定网站上使用,防止其他网站直接引用,减少热链盗用。
提高网站安全性:Referer防盗链只允许特定网站访问资源,防止恶意盗链、恶意访问或盗取敏感信息。
控制流量来源:Referer防盗链限制特定网站的流量访问,有效控制流量来源,提高网站稳定性和安全性。
综上所述,您可以根据需求,在不同场景中使用Referer防盗链功能,保护资源、提高安全性和控制流量。
工作原理
服务器端检查每个请求的Referer字段,如果Referer字段不是来自自己信任的网站,就拒绝提供服务。这样可以防止其他网站直接链接到自己的资源,从而节省带宽和服务器资源。如果配置了Referer防盗链,CDN将根据请求的Referer与配置的Referer规则来判断是否允许此请求:
如果浏览器携带的Referer与黑名单Referer匹配,或与白名单Referer不匹配,则CDN将拒绝该请求的访问。
如果浏览器携带的Referer与白名单Referer匹配,则CDN将允许该请求的访问。
注意事项
配置Referer防盗链后,黑名单请求仍可访问CDN节点,但会被拒绝并返回403状态码,CDN日志中也会记录该请求。
Referer防盗链功能基于HTTP请求头中的Referer字段设置访问控制规则。黑名单请求被拦截时会产生少量流量费用,使用HTTPS协议访问还会产生HTTPS请求数费用。
操作步骤
登录CDN控制台。
在左侧导航栏,单击域名管理。
在域名管理页面,找到目标域名,单击操作列的管理。
在指定域名的左侧导航栏,单击访问控制。
在Referer防盗链页签,单击修改配置。
根据业务需求,设置Referer黑名单或白名单。
参数
说明
Referer类型
黑名单
黑名单内的域名无法访问当前资源。
白名单
只有白名单内的域名能访问当前资源。
说明黑名单和白名单互斥,只能选择一种。
规则
支持添加多个Referer名单,使用回车符分隔。
支持使用星号(*)作为通配符。例如,配置
*.developer.aliyundoc.com
,可以匹配到image.developer.aliyundoc.com
或video.developer.aliyundoc.com
等。
说明Referer防盗链规则的总长度最长不超过60 KB。
重定向URL
请求被拦截后返回302+Location头,该项为Location头的值,必须以
http://
或者https://
开头,例如:http://www.example.com
。高级配置
允许通过浏览器地址栏直接访问资源URL
默认未勾选。勾选后,无论配置的是Referer黑名单还是白名单,系统不拦截空Referer请求,CDN节点允许用户访问当前资源。
空Referer包括:
用户请求中不携带Referer头。
Referer头值为空。
精确匹配
未勾选精确匹配时:
默认未勾选。
不支持精确匹配,可模糊匹配。
支持后缀匹配。不能在域名左边加“.”,实际下发配置时系统会自动在域名左边加上“.”。
Referer规则列表填写
example.com
,匹配example.com
和<任意字符>.example.com
。Referer规则列表填写
a*b.example.com
,匹配a<任意字符>b.example.com
和<任意字符>.a<任意字符>b.example.com
。
勾选精确匹配时:
支持精确匹配,不匹配子域名。
Referer规则列表填写
example.com
,仅匹配example.com
。Referer规则列表填写
a*b.example.com
,仅匹配a<任意字符>b.example.com
。
不支持后缀匹配。
忽略scheme
无论配置的是Referer黑名单还是白名单:
未勾选忽略scheme时,如果Referer没有带上HTTP或HTTPS协议头部,则按照无效Referer处理。例如Referer格式为
www.example.com
时无效,只有Referer格式为https://www.*.com
或http://www.*.com
才有效。勾选忽略scheme后,即使Referer没有带上HTTP或HTTPS协议头部,也当作有效Referer处理。例如Referer格式为
www.example.com
依然有效。
规则条件
规则条件能够对用户请求中携带的各种参数信息进行识别,以此来决定某个配置是否对该请求生效。
不使用:不使用规则条件。
选择已配置的规则引擎,新增或修改规则引擎请参见规则引擎。
单击确定,完成配置。
Referer匹配逻辑
通过以下名单配置为例,阐述Referer头部的匹配逻辑。如果一个请求未匹配白名单或者匹配了黑名单,CDN会拒绝请求并返回403状态码。
名单配置 | 用户请求中的Referer值 | 匹配结果 | 匹配逻辑说明 |
| http://www.example.com/img.jpg | 是 | Referer头部中的域名匹配名单。 |
http://www.example.com:80/img.jpg | 是 | ||
www.example.com | 见说明 |
| |
http://aaa.example.com | 是 | 无论是否勾选精确匹配,均为匹配。 | |
http://aaa.bbb.example.com | 见说明 |
| |
http://example.com | 否 | Referer头部中的二级域名不匹配名单中的泛域名条目。泛域名不包含二级域名本身。 | |
http://www.example.net | 不匹配任何规则 | 既未匹配白名单,也未匹配黑名单,按照默认策略处理,允许访问。 |