oss防盗链zblog oss防盗链原理

如何实现网站的防盗链?

可以基于OSS的防盗链,目前OSS提供的防盗链的方法主要有两种:

创新互联于2013年开始,先为林口等服务建站,林口等地企业,进行企业商务咨询服务。为林口企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

设置Referer。控制台,SDK都可以操作,适合不想写代码的用户,也适合喜欢开发的用户;

签名URL,适合喜欢开发的用户。 本文会给一个控制台设置Referer防盗链的具体事例,也会基于PHP SDK给一个动态生成签名URL防盗链的示例。

通过Referer防盗链的具体步骤

第一步:进入 OSS 管理控制台界面。

第二步:单击目标存储空间的名称进入存储空间管理页面。

第三步:单击 Bucket 属性 防盗链设置。

第四步:单击“设置”添加白名单网址并设置是否允许其为空。

请点击输入图片描述

第五步:单击“提交”保存对防盗链的设置。

举例

对于一个名为test-1-001的存储空间,设置其referer 白名单为 。则只有 referer 为的请求才能访问oss-example这个存储空间中的对象。

签名URL实现步骤

签名URL的原理和实现方法见OSS开发人员指南授权第三方下载。 签名URL的实现步骤:

1、将Bucket的权限设置为私有读;

2、 根据期望的超时时间(签名URL失效的时间)生成签名。

具体实现

第一步:安装PHP最新代码,参考PHP SDK文档;

第二步:实现生成签名URL并将其放在网页中,作为外链使用的简单示例:

?phprequire 'vendor/autoload.php';#最新PHP提供的自动加载use OSS\OssClient;#表示命名空间的使用$accessKeyId="a5etodit71tlznjt3pdx7lch";#AccessKeyId,需要使用用户自己的$accessKeySecret="secret_key";#AccessKeySecret,需要用用户自己的$endpoint="oss-cn-hangzhou.aliyuncs.com";#Endpoint,根据Bucket创建的区域来选择,本文中是杭州$bucket = 'referer-test';#Bucket,需要用用户自己的$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);$object = "aliyun-logo.png";#需要签名的Object$timeout = 300;#期望链接失效的时间,这里表示从代码运行到这一行开始的当前时间往后300秒$signedUrl = $ossClient-signUrl($bucket, $object, $timeout); #签名URL实现的函数$img= $signedUrl;#将签名URL动态放到图片资源中并打印出来$my_html = "html";$my_html .= "img src=\"".$img. "\" /";$my_html .= "p".$img."/p";$my_html .= "/html";echo $my_html;?

第三步:通过浏览器访问 多请求几次会发现签名的URL会变,这是正常的。主要是因为过期时间的改变导致的。这个过期时间是链接失效的时间,是以unix time的形式展示的。 如:Expires=189999,可以将这个时间转换成本地时间。在Linux下的命令为date -d@189999,也可以在网络上找工具自行转换。

特别说明

签名URL可以和Referer白名单功能一起使用。

如果签名URL失效的时间限制在分钟内,盗链用户即使伪造了Referer也必须拿到签名的URL,且必须在有效的时间内才能盗链成功。 相比只使用Referer来说,增加了盗链的难度。 也就是说签名URL配合Referer白名单功能,可以增加防盗链的效果。

防盗链总结,基于OSS的防盗链最佳实践点如下:

使用三级域名URL,例如referer-test.oss-cn-hangzhou.aliyuncs.com/aliyun-logo.png,安全性比绑定二级域名更高。三级域名方式能够提供Bucket级别的清洗和隔离,能够应对被盗链后的流量暴涨的情况,也能避免不同Bucket间的互相影响,最终提高业务可用性;

如果使用自定义域名作为连接,CNAME也请绑定到三级域名,规则是bucket + endpoint。假如你的bucket名为test,三级域名则为test.oss-cn-hangzhou.aliyuncs.com;

对Bucket设定尽可能严格的权限类别。例如提供公网服务的Bucket设置为public-read或private,禁止设置为public-read-write。Bucket权限参见访问控制;

对访问来源进行验证,根据需要设置合适的Referer白名单;

如果需要更严格的防盗链方案,请参考签名的URL方案;

记录Bucket访问日志,能够及时发现盗链活动和验证防盗链方案的有效性。 访问日志参见设置访问日志记录。

OSS设置防盗链

对象存储OSS支持对存储空间(Bucket)设置防盗链,即通过对访问来源设置白名单的机制,避免OSS资源被其他人盗用。

设置向导:

参考设置:

alist官网打不开

alist访问面板打不开 - 百度知道

1个回答回答时间:2022年12月16日

最佳回答:1、网络设置的问题。2、DNS服务器的问题。3、浏览器本身的问题以及网络防火墙的问题。

百度知道

Alist首页和管理页都是空白的解决过程 - 邮莓生活

2022年8月1日第一:登录SSH,编辑config.json文件,默认安装在/opt/alist/data/第二:修改 "assets": "...

邮莓生活

alist官网打不开 - 移动设备专家答疑 - 百度问一问

5分钟内回复 多年专业经验

alist官网打不开

马上提问

ashford网站打不开

136人正在咨询

浏览器打不开steam官网

101人正在咨询

为什么打不开啵乐

128人正在咨询

ashford网站打不开

136人正在咨询

优选电子数码答主在线答疑

在线

数码达人霜霜

Alist首页和管理页都是空白的解决过程

2022-08-01

6124

分享

文章目录[隐藏]

前言

解决过程

自行解决

assets

NPM

GitHub

已解决

总结

前言

先要感谢开源项目Alist的作者,无私奉献,开发出了这么优秀的作品,之前本博客有介绍过挂载阿里网盘和夸克onedrive等网盘,实现了webdav

《折腾Alist挂载阿里云盘*2+onedrive+夸克,实现本地webdav》

还实现了SSL证书的三种方式,实现了https加密访问

《Alist使用https域名证书SSL的三种方法》

但是,最近也不知道是升级到最新版本,还是什么原因,以现今天打开是空白页面了,不管是前台,还是后台,都全空白,也没有报错,

就不截图了,空白页面应该都能从文字了解到

解决过程

一开始,先来个重启服务systemctl restart alist,问题依旧

接着,重启服务器,reboot,问题依旧

到甲骨文的后台重新引导,问题依旧

谷歌找一下,好像说是CDN引起的问题,开源项目的issue里也有遇到同样问题的,有热心网友已提出了解决方法,这里实际操作并记录一下

打开console,发现确实两个js文件没有加载出来

打开网页空白,无法获取静态资源,浏览器控制台显示如下:

GET net::ERR_ABORTED 403

GET net::ERR_ABORTED 403

估计是饿了么的阿里云oss开了防盗链引起不让使用所至

自行解决

第一:登录SSH,编辑config.json文件,默认安装在/opt/alist/data/

第二:修改 "assets": ""为

“/” 即使用本地

“其它可用的”

assets

使用的静态资源位置。这是动态可变化的,现有的静态资源在 npm 和 GitHub 上都有托管,它们的位置分别是:

所以你可以使用任何 npm 或者 github 的 cdn 来作为路径。默认使用饿了么反代的 unpkg 的 cdn(阿里云 cdn): ,$version在程序中会自动替换为前端的发行版本。在这里列举一些其他的可用的 assets:

NPM

jsdelivr npm:

unpkg npm:

tianli jsdelivr npm(腾讯云cdn):

GitHub

jsdelivr github:

tianli jsdelivr github(腾讯云cdn):

第三:systemctl restart alist 重启alist

已解决

总结


分享标题:oss防盗链zblog oss防盗链原理
分享链接:http://pwwzsj.com/article/dddjjoi.html