使用 S3、OSS 这一类对象存储,如果选择客户端 web 端直传。生成了临时 token 给了用户某个 bucket 的写入权限,怎么样防止用户提交同名文件覆盖 bucket 中已有的文件?
1
xeaglex Dec 11, 2019 via Android
先请求再上传?
|
2
rrfeng Dec 11, 2019 via Android
上传有这个选项的。仔细查一下文档。
|
3
malusama Dec 11, 2019
你生成 uuid 附在用户的文件名后面嘛
|
4
EileenJ Dec 11, 2019 via Android
可以通过文件名获取元数据信息
|
5
optional Dec 11, 2019 via iPhone 阿里云不行。 要么用 url 签名。
要么,把时间参数作为目录的一部分,每隔一段时间换一个目录。 |
6
huijiewei Dec 11, 2019
${filename} 用随机字符串就是了
|
7
opengps Dec 11, 2019 via Android
先获取一下,看看返回值,然后再上传。
不过我更建议本地维护一个文件列表数据库,只依赖厂商的接口用起来毕竟受一定约束了 |
8
lshero OP |
9
009694 Dec 11, 2019 via iPhone oss token 包含的路径授权是可以包含文件名的 只要限定到文件名之后 最多只能重复上传覆盖自己之前上传的文件
|
11
optional Dec 12, 2019 via iPhone |
13
rrfeng Dec 12, 2019 via Android
你所谓的恶意请求是什么?
|
15
walkersz Dec 12, 2019 sts token 授权单个文件,文件名指定 GUID
|
16
lshero OP @walkersz 授权单个文件楼上也说了成本比较高尤其是客户端要上传多个文件到同一 bucket 中的时候,不过为了安全只能这么搞,要不然就是随机一个文件夹进行隔离
|
17
ooh Dec 12, 2019
检查一下文件是否存在
|
18
mangoDB Dec 12, 2019 研究一下 ACL 相关配置,应该可以通过设置 Deny 和 MODIFY 相关,实现”防篡改“。
|