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

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

这样操作主要的作用就是防止资源被盗刷,如果 oss 没有这样的操作,其他的 bucket 有这种操作吗?
2844 次点击
所在节点    程序员
32 条回复
whileFalse
2023-12-25 01:49:19 +08:00
这玩意不往你本地写 cookie ,没法计算次数。它的授权基于临时 token 。

它只是一个简单的存储功能,如果你需要业务特性,需要你自己的业务实现。
cslive
2023-12-25 08:26:02 +08:00
oss 套 cdn 吧,cdn 买流量,流量没了就停用,不然 oss 被刷你就惨了
sujin190
2023-12-25 08:45:22 +08:00
厂商的请求数都是后算的吧,而且也只是个统计值,否则近乎实时计算每个对象的请求数这个费用估计都得超过你存储需要的费用了吧,所以没有这功能才是正常的
my3157
2023-12-25 09:22:22 +08:00
对象存储的签名机制是纯算法实现,不存储任何状态,验证的本质就是在服务端重新算一遍,所以一但带签名的 URL 泄露,你是没法控制的,你能控制的就是有效期,下载的时候 redirect + 缩短签名有效期 能一定程度上避免,但无法杜绝
Dongxiaohao
2023-12-25 09:29:55 +08:00
@gaobh 我能理解成让他不直接请求 oss 的资源地址 直接请求我的接口下载吗,但是如果是这样的话 那下载速度不就被我这台机器的带宽给限制了?
Dongxiaohao
2023-12-25 09:31:42 +08:00
@IvanLi127 这个方法确实,我提阿里的工单 他也说你把你的链接时效性设置成几秒就行了
beyondstars
2023-12-25 13:04:25 +08:00
@Dongxiaohao #25 虽然我没实现过,但感觉可以这样:你用 PreSigned URL (不知道 aliyun OSS 支持否),然后 PreSigned URL 的 hostname 部分指向你的一个服务,然后这个服务统计每一个 PreSigned URL 的请求次数,在此数之内,Http 302 重定向到真正的 PreSigned URL (就是 hostname 没被替换的那个),超过了次数返回错误,这样宽带不受你的服务器的限制。
beyondstars
2023-12-25 13:06:22 +08:00
比如说你拿到的一个 PreSigned URL 是 https://oss.aliyun.com/xxx ,你就把它替换成 https://your-service.example.com/xxx ,然后你在 your-service.example.com 部署那个判断次数的 HTTP 应用。
HTDit
2023-12-25 17:27:33 +08:00
@IvanLi127 你知道我为什么说他质量高吗,对于 op 的问题他直接给出了答复,并且在此基础上给出了其他实现途径和方法,我觉得这简直是太棒了。而且他的内容除了开头和结尾官方式答复,中间的内容是条理清晰,不会让人读来摸不着头脑。
IvanLi127
2023-12-25 18:35:41 +08:00
@HTDit 我觉得那个答案可行性不够,有头没尾,后面一半直接扯套话了,把问题重新抛出来。中间那几行感觉有深入了解的价值,但是具体怎么做没说清楚,问 ai 还能追问。7 段话就 2 段有用啊,看不出来个答案质量有多高...
HTDit
2023-12-25 21:49:06 +08:00
@IvanLi127 那你感觉你的方案和 ai 回答的数据库下限制,在实现方向上,有区别吗
IvanLi127
2023-12-26 00:54:12 +08:00
@HTDit 我认为 ai 没有结合对象存储提供可行方案,只要没提签短时间的链接,方向到底一不一样,还得再问一两次才知道。
反正我没看出来这份 ai 回答有什么好的,ai 好不好就到此为止吧,我的答案不配和 ai 比。

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

https://yangjunhui.monster/t/1003041

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

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

© 2021 V2EX