minio图片URL安全性问题

Blade 未结 2 103
six_six_2005
six_six_2005 剑圣 2025-07-03 14:43

一、该问题的重现步骤是什么?

1. 程序部署在内网,有一个应用是访客填写访客单,其中有上传人员头像的功能。通过nginx反向代理将minio的头像网址,返回给uniapp前端供上传后回显。现在网信部门指出,这种方式可以拿到所有存储在minio的图片和文件(虽然文件名是一长串乱码)。 我在网上找了2种方案
第一种:使用minio的预签名,后端动态生成一个有时效性(如5分钟内有效)且带有加密签名的临时URL,然后将这个临时URL返回给前端。前端使用这个临时URL来显示图片,并设置一个较短的过期时间(例如300秒,即5分钟)。 这种方案所有代码是用minioClient来实现, 框架是支持多种对象存储方案,不知道有没有对这种方案的支持,有没有相关的文档链接?
第二种:

2.  createObjectURL方法

  参考  https://segmentfault.com/a/1190000044786157 的第二种方案(第一种转base64性能比较差暂不考虑),这种方案是后端不返回实际minio地址,由uniapp自行处理回显,网上有说这种方案性能也不好。我不确定。

3.


二、你期待的结果是什么?实际看到的又是什么?

有个基于框架的兼顾性能的安全minio展示到外网的方案

三、你正在使用的是什么产品,什么版本?在什么操作系统上?

bladex 4.2

四、请提供详细的错误堆栈信息,这很重要。


五、若有更多详细信息,请在下面提供。

2条回答
  • 2025-07-03 14:47

    把url存到附件表返回文件id,通过id调用你们自己新建的一个文件预览接口,接口需要token鉴权,通过鉴权后,接口内部根据id找到附件表的记录,再获取url,再读取url以流的形式返回给前端。

    0 讨论(0)
  • 2025-07-03 15:28

    目前公网上给访客的H5是公开的,不需要访客登录,token鉴权是不是不可行?

    作者追问:2025-07-03 16:27

    不鉴权也可以,因为你不对对外暴露真实地址。逻辑一样的,外网展示的都是一个统一的文件接口+文件ID,然后接口内部根据id查url,再转成流返回。


    外部的人看永远是 http://xx.com/api/attach/oss/123456789 这样的连接,不可能被攻击的 。

    作者追问:2025-07-03 16:29

    再做深一点,附件表加一个是否需要鉴权的字段,这样可以把一些重要文件标记为必须鉴权或者管理员权限才可以看。

    minio也不要开放外网,就让接口通过内网地址访问再返回流,这样外部就算没有token,访问普通文件的时候,也无法获取minio的详细目录信息了。

    0 讨论(0)
提交回复