跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 使用对象存储如何防止覆盖上传?
未分類
21 6 月 2020

使用对象存储如何防止覆盖上传?

使用对象存储如何防止覆盖上传?

資深大佬 : lshero 77

使用 S3、OSS 这一类对象存储,如果选择客户端 web 端直传。生成了临时 token 给了用户某个 bucket 的写入权限,怎么样防止用户提交同名文件覆盖 bucket 中已有的文件?
大佬有話說 (18)

  • 資深大佬 : xeaglex

    先请求再上传?

  • 資深大佬 : rrfeng

    上传有这个选项的。仔细查一下文档。

  • 資深大佬 : malusama

    你生成 uuid 附在用户的文件名后面嘛

  • 資深大佬 : EileenJ

    可以通过文件名获取元数据信息

  • 資深大佬 : optional

    阿里云不行。 要么用 url 签名。
    要么,把时间参数作为目录的一部分,每隔一段时间换一个目录。

  • 資深大佬 : huijiewei

    ${filename} 用随机字符串就是了

  • 資深大佬 : opengps

    先获取一下,看看返回值,然后再上传。
    不过我更建议本地维护一个文件列表数据库,只依赖厂商的接口用起来毕竟受一定约束了

  • 主 資深大佬 : lshero

    @opengps
    @huijiewei
    @malusama
    @xeaglex
    目前用的是 GUID 作为文件名,主要是 web,客户端直传不经过业务服务器,所以如果恶意构造同名文件随机文件名也并没有啥用。

    @rrfeng 上传只有 PutObject 方法里有 x-oss-forbid-overwrite 这个参数,但是由于用 RAM+STS 授权的话,token 需要暴露给前端授权也只有给与写入的权限,所以这个方法并不能解决前端恶意构建请求。

    @optional
    感觉只能用 PostObject 这种方式搞表单上传,但是浏览器和客户端的 SDK 基本就废了

  • 資深大佬 : 009694

    oss token 包含的路径授权是可以包含文件名的 只要限定到文件名之后 最多只能重复上传覆盖自己之前上传的文件

  • 主 資深大佬 : lshero

    @009694 是在 policy 中 Resource 的指定到具体文件吗?我研究一下,谢谢。

  • 資深大佬 : optional

    @009694
    @lshero
    指定文件名的是 url 签名。只能用 put 方式上传,不能分片和断点续传,只能传传小文件。
    sts 有最小周期,一个 sts 一个文件太奢侈。
    目前折衷方案就是一个 sts 周期对应一个随机目录,在有限的时间内允许被覆盖。

  • 資深大佬 : shanlan

    参考下 SM.MS ,重复图片不能传并且会提示

  • 資深大佬 : rrfeng

    你所谓的恶意请求是什么?

  • 主 資深大佬 : lshero

    @rrfeng sts token 授权整个 bucket 后,利用 sts token 可以覆盖写授权目录内已经存在的文件

  • 資深大佬 : walkersz

    sts token 授权单个文件,文件名指定 GUID

  • 主 資深大佬 : lshero

    @walkersz 授权单个文件上也说了成本比较高尤其是客户端要上传多个文件到同一 bucket 中的时候,不过为了安全只能这么搞,要不然就是随机一个文件夹进行隔离

  • 資深大佬 : ooh

    检查一下文件是否存在

  • 資深大佬 : mangoDB

    研究一下 ACL 相关配置,应该可以通过设置 Deny 和 MODIFY 相关,实现”防篡改“。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具