阿里云oss防盗链

防盗链能做什么

  • 禁止未经授权的使用:保护图片、视频、音频等敏感或有版权的文件不被未经授权的网站下载或访问。
  • 节省带宽和资源消耗:通过防止盗链,避免其他网站直接链接到自己的资源文件,减少了非法访问带来的带>- 宽消耗和服务器资源压力。
  • 付费内容保护:在提供付费内容的场景中,防盗链可以确保只有购买者才能访问和使用付费内容,防止非法传播和盗版。
  • 合作伙伴授权访问:某些情况下,需要与合作伙伴网站共享资源或数据,通过防盗链可以限制只有特定合作伙伴可以访问和使用共享资源。

简单来说就是防止别人盗用和未经允许的来源使用你的资源

怎么实现的

  1. 通过配置Referer来防止其他非法网站或用户盗用你的OSS资源
  2. Referer:HTTP请求头部中的一个字段,包含了请求的来源页面的URL。通过检查Referer头部的值,可以判断请求的来源页面。可以用来判断请求来源,拦截请求或者数据统计。
  3. 空Referer的两种情况:
    • 请求并不是由链接触发产生。例如直接通过浏览器输入地址打开;
    • 从HTTPS页面上的链接访问到非加密的HTTP页面时;
  4. 黑名单白名单:可以配置一个白名单/黑名单来定义允许/拒绝访问资源的Referer的来源

原理逻辑

在这里插入图片描述

  1. 判断请求Referer是否为空。

    • 如果请求Referer为空,则查看是否允许空Referer。

      • 如果允许空Referer,则请求被允许。

      • 如果不允许空Referer,且白名单Referer列表为空,则请求被允许。

      • 如果不允许空Referer,且白名单Referer列表不为空,则请求被拒绝。

    如果请求Referer不为空,则执行步骤2。

  2. 判断黑名单Referer列表是否为空。

    • 如果黑名单Referer列表为空,且白名单Referer列表为空,则请求被允许。

    • 如果黑名单Referer列表为空,且白名单Referer列表不为空,则跳过步骤3,执行步骤4。

    • 如果黑名单Referer列表不为空,则执行步骤3。

  3. 遍历黑名单Referer列表。

    • 如果黑名单Referer列表存在匹配条目,则请求被拒绝。

    • 如果黑名单Referer列表不存在匹配条目,则执行步骤4。

  4. 遍历白名单Referer列表。

    • 如果白名单Referer列表存在匹配条目,则请求被允许。

    • 如果白名单Referer列表不存在匹配条目,则请求被拒绝。

注意事项

  • 只支持对Bucket设置防盗链,而不是某个文件或者文件夹
  • 请求的Header中包含Authorization字段,OSS不会进行防盗链验证
  • 一个Bucket可以支持多个Referer参数,参数之间通过,分隔
  • Bucket开启防盗链后,所有权限(private、public-read、public-read-write)的Bucket都会检查Referer字段
  • Bucket开启防盗链后,使用OSS的Bucket域名或自定义域名预览MP4文件时,必须在Referer白名单中添加相应的域名,并允许空Referer。因为浏览器会发送一个带Referer和一个不带Referer的请求,两个请求都成功才能正常播放视频。预览非MP4文件时,只需允许空Referer。
  • QueryString:HTTP请求中的一部分,用于在URL中传递参数信息。通常包含在URL的问号后面,以键值对的形式表示。

查看来源的Referer

在OSS日志中查看OSS请求的Referer

在这里插入图片描述

配置Referer防盗链

在这里插入图片描述
官方文档:https://help.aliyun.com/zh/oss/user-guide/configure-referer-policy-to-prevent-other-websites-from-referring-to-oss-files?spm=a2c4g.11186623.help-menu-31815.d_4_5_1_1.3fc22520WQWQd8

  • 控制台设置防盗链
    打开防盗链按钮,配置白名单或者黑名单
    在这里插入图片描述

验证是否生效

  • 随便带一个Referer,被拒绝
C:\Users\w4523>curl -e 123 https://wzw-bucket.oss-cn-beijing.aliyuncs.com/20250305/1897191193005162496.txt
<?xml version="1.0" encoding="UTF-8"?>
<Error>
  <Code>AccessDenied</Code>
  <Message>You are denied by bucket referer policy.</Message>
  <RequestId>67C800B77FFDC23734302B79</RequestId>
  <HostId>wzw-bucket.oss-cn-beijing.aliyuncs.com</HostId>
  <BucketName>wzw-bucket</BucketName>
  <EC>0003-00000503</EC>
  <RecommendDoc>https://api.aliyun.com/troubleshoot?q=0003-00000503</RecommendDoc>
</Error>
  • 携带白名单Referer中的域名,成功
C:\Users\w4523>curl -e http://www.aliyun.com https://wzw-bucket.oss-cn-beijing.aliyuncs.com/20250305/1897191193005162496
.txt
问题类型:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值