通过在云存储服务中配置基于请求标头Referer的访问规则,可以阻止某些Referer访问您的云存储服务文件,从而防止其他网站盗用您的文件,并避免由此引起的不必要的流量费用增加。
使用场景
1.禁止未经授权的使用:保护图片、视频、音频等敏感或有版权的文件不被未经授权的网站下载或访问。2.节省带宽和资源消耗:通过防止盗链,避免其他网站直接链接到自己的资源文件,减少了非法访问带来的带宽消耗和服务器资源压力。3.付费内容保护:在提供付费内容的场景中,防盗链可以确保只有购买者才能访问和使用付费内容,防止非法传播和盗版。4.合作伙伴授权访问:某些情况下,需要与合作伙伴网站共享资源或数据,通过防盗链可以限制只有特定合作伙伴可以访问和使用共享资源。
基本概念
1.盗链:是指在一个网页内,以链接的形式嵌入另一个网页的内容,从而获取他人的资源而不经过授权。2.防盗链:在OSS中,是指通过配置Referer来防止其他非法网站或用户盗用您的云存储服务资源。3.Referer:HTTP请求头部中的一个字段,包含了请求的来源页面的URL。通过检查Referer头部的值,可以判断请求的来源页面。Referer检查通常用于以下两种场景:防盗链。例如,网站访问自己的图片服务器,图片服务器通过Referer来判断是否为自己的域名,如果是就继续访问,不是则拦截;数据统计。例如,统计用户是从哪个链接过来访问的。4.空Referer:HTTP请求中Referer头部的内容为空,或者HTTP请求中不包含Referer头部。如果存在以下两种情况,则Referer为空:当请求并不是由链接触发产生。例如直接通过浏览器输入地址打开页面;从HTTPS页面上的链接访问到非加密的HTTP页面时,在HTTP页面上是检查不到Referer的。5.白名单:一种限制只允许特定来源访问资源的列表。在防盗链中,可以配置一个白名单来定义允许访问资源的Referer来源。6.黑名单:一种限制阻止特定来源访问资源的列表。在防盗链中,可以配置一个黑名单来定义阻止访问资源的Referer来源。7.QueryString:HTTP请求中的一部分,用于在URL中传递参数信息。它通常包含在URL的问号后面,以键值对的形式表示。
功能原理
当浏览器向OSS发送请求时,请求标头中将包含Referer,用于告知OSS该请求的页面链接来源。如果配置了防盗链,OSS将根据请求的Referer与配置的Referer规则来判断是否允许此请求:
1.如果浏览器附带的Referer与黑名单Referer匹配,或与白名单Referer不匹配,则OSS将拒绝该请求的访问。2.如果浏览器附带的Referer与白名单Referer匹配,则OSS将允许该请求的访问。
例如,某个Bucket配置了白名单Referer为https://10.10.10.10。
1.用户A在https://10.10.10.10嵌入test.jpg图片,当浏览器请求访问此图片时会带上https://10.10.10.10的Referer,此场景下OSS将允许该请求的访问。2.用户B盗用了test.jpg的图片链接并将其嵌入https://192.168.0.0,当浏览器请求访问此图片时会带上https://192.168.0.0的Referer,此场景下OSS将拒绝该请求的访问。
判断逻辑
开启防盗链后,云存储服务会根据请求Header中的Referer地址判断访问来源的方式,确定是否允许当前请求。具体判断逻辑如下。
nginx配置防盗链
在 Nginx 中配置防盗链可以帮助防止未经授权的站点或用户在未经许可的情况下直接链接到您网站上的资源。这种情况下,只有经过授权的站点或用户才能访问到您的资源,其他直接链接的请求将被拒绝。
以下是一个简单的 Nginx 防盗链配置示例:
1、 打开 Nginx 配置文件(通常是 /etc/nginx/nginx.conf
或 /etc/nginx/sites-available/default
)。
2、 在需要设置防盗链的 server
配置块内,添加如下配置:
location / {
valid_referers none blocked example.com *.example.com;
if ($invalid_referer) {
return 403;
}
}
在上面的配置中:
•valid_referers
指定了允许访问资源的来源,可以是特定的域名、通配符或 none
(表示不检查 Referer 头)。•if ($invalid_referer)
检查请求的 Referer 头是否在允许的列表中,如果不在列表中则返回 403 Forbidden 响应。
3、 重新加载或重启 Nginx 以使配置生效。
请注意,防盗链配置可能会影响正常的资源加载,因为一些浏览器或代理可能不会发送 Referer 头,或者可能会被篡改。因此,防盗链配置应根据您网站的具体需求和访问情况进行调整。
在配置防盗链时,建议测试配置的有效性,并确保不会对正常访问造成影响。