请教一下大伙们对象存储的问题

137 天前
 Dongxiaohao
之前用阿里的 OSS ,用 STS 对资源链接进行签名。但是我在文档中只发现可以设置链接时效性的参数。
我的需求是,这个链接只能下载指定次数(自己设置),超过指定次数之后,就无法打开下载了。
在阿里的 oss 文档上貌似没有看见相关的案例。

这样操作主要的作用就是防止资源被盗刷,如果 oss 没有这样的操作,其他的 bucket 有这种操作吗?
2291 次点击
所在节点    程序员
32 条回复
standchan
137 天前
直接提工单问,方便快捷官方
Dongxiaohao
137 天前
@standchan #1 好家伙,没意识到,这就去问一下
zzboat0422
137 天前
部分云厂商的对象存储是有防盗链功能的,不知道阿里云有没有
Dongxiaohao
137 天前
@zzboat0422 #3 防盗链不能实现限制访问频次的需求吧
Dongxiaohao
137 天前
问了一下 OSS 和 COS 的客服,都不能对访问次数限制,没办法了
google2020
137 天前
印象中没这功能,因为没法计算,比如多线程这算一次还是多次呢,断点续传算几次呢。

防被刷记得配合 CDN 使用,CDN 流量便宜很多,也可以用边缘脚本鉴权和限速。
em70
137 天前
gpt4 的回答:

阿里云的对象存储服务( OSS )确实提供了生成带签名的 URL 的功能,这些 URL 可以限制访问时间,但根据我最新的了解,阿里云 OSS 本身并不直接支持限制 URL 的下载次数。换句话说,OSS 可以限制一个链接在某个时间点之后不再有效,但不能限制该链接被访问的次数。

如果您的需求是限制资源链接的下载次数以防止资源被盗刷,您可能需要考虑一些替代方案:

中间件控制:您可以设置一个中间件(如服务器端的应用程序),用于管理和分发 OSS 资源链接。这个中间件可以跟踪每个链接的下载次数,并在达到预定次数后停止分发该链接。

数据库记录:您可以在数据库中记录每个链接的下载次数,并在请求时检查次数。如果下载次数超过限制,则拒绝进一步的下载请求。

其他云存储服务:如果阿里云 OSS 不满足您的特定需求,您可以考虑其他云存储服务,如 Amazon S3 或 Google Cloud Storage ,看看它们是否提供了更符合您需求的功能。

第三方解决方案:也可以考虑使用第三方服务或工具,这些服务或工具可能提供了更灵活的访问控制选项,包括基于下载次数的限制。

总之,虽然 OSS 本身可能不支持基于下载次数的限制,但通过一些创造性的解决方案,您仍然可以实现类似的功能。
kangjm
137 天前
Presigned url 没这功能 https://stackoverflow.com/questions/54781941/how-to-restrict-number-of-hits-to-s3-bucket-via-presigned-url

你可以连个 redis 来记录访问次数,再在后端做个验证
cwxiaos
137 天前
你可以在 serverless 中搞一个简单的透传,中间加一个计数,把签名也放里面,像 Cloudflare Worker, 华为云 FunctionGraph 啥的
akira
137 天前
这种上层 偏业务向的需求,需要自己实现
gaobh
137 天前
当然是自己写逻辑了,下载链接二次包装一次。因为用户体系和下载次数是在你自己的系统里的
wunonglin
137 天前
@@Livid #7 GPT 回答
wunonglin
137 天前
HTDit
137 天前
@wunonglin 你想表达什么??这个回答明明质量很高啊。
wunonglin
137 天前
@HTDit #14

https://www.v2ex.com/about

```
请不要把 AI 生成的内容发送到这里
```
yolee599
137 天前
@HTDit #14 本站禁止回复 AI 生成的内容,一没经过验证,二一大堆啰嗦话占浏览空间
lingo
137 天前
要不还是自己实现吧。想怎么搞就怎么搞。
yuzo555
137 天前
可以考虑通过有些 CDN 支持的回源鉴权功能,自己实现一个接口来鉴权。

但实际上链接下载次数这个实现比较麻烦,并不是一次访问就是一次下载,一般一次下载会有很多次分片请求。
如果是一个固定链接,单纯判断 IP 和区分有无 Range 头可能误杀率较高。

这个需求最好还是要动态链接会比较好实现,每个不同的下载 URL 里有不同的 Token
IvanLi127
137 天前
@HTDit 那个回答质量差得离谱,字多的车轱辘话
IvanLi127
137 天前
业务里自己统计下载次数,没达到次数限制就签个未来几秒内过期的链接给客户端,这样能近似实现效果。

我没实践过,op 可以试试

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1003041

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX