相关文章推荐
傻傻的烤面包  ·  sql Post 跟 ...·  2 周前    · 
瘦瘦的木耳  ·  TypeError: ...·  1 周前    · 
深情的便当  ·  sql 在not in ...·  1 年前    · 

如果应用中存在大量的图片,音频,视频,或者文件等资源,最好的办法不是把它们放在静态目录下,而是保存到资源服务器oss上。

目前可选的资源服务器挺多,比如FastDFS,Minio,AWS/S3等,云服务器供应商也提供资源服务器OSS租用。但最舒心的方式还是自己搭建一个私有资源服务器,比如Minio。

为什么选择Minio呢?因为实在是太简单易用了,功能却很强大。但Minio不注意使用的话,会存在一个超级大的信息泄露的风险。

简单说,就是如果你想要提供永久性的资源下载链接,就需要把Bucket(桶)的BP设置为Read&Write。

问题来了!!!

当你用 http://minio_out_url/bucket_path/ 访问时,会得到一个超大的XML

这是怎么回事呢?!原来minio的桶有一个listObjects的功能,默认最多1000条记录,这就意味着,如果你打开永久下载链接模式,那么任何人可以通过桶路径来获取你保存的所有资源的信息,然后一个一个下载下来!如果这些资源是各种敏感数据,比如说艳照门之类,那超级八卦又该爆发了。

怎么去封堵这个风险隐患呢?需要做两件事情:

1、把Minio隐藏到内网去,让公网用户无法直接访问到minio服务器

2、通过Nginx的proxy_pass跳转访问Minio资源

3、Nginx的配置文件进行Rewrite屏蔽,只允许访问具体资源文件,不允许访问桶路径:

  location  ^~ /images {
      rewrite ^/images/(.+)$ /images/$1 break;
      proxy_pass http://minio_local_url/;

再去访问http://minio_out_url/bucket_path/,你会发现路径无效。但是你用具体的资源链接去访问,仍然可以获得资源内容。

如果应用中存在大量的图片,音频,视频,或者文件等资源,最好的办法不是把它们放在静态目录下,而是保存到资源服务器oss上。目前可选的资源服务器挺多,比如FastDFS,Minio,AWS/S3等,云服务器供应商也提供资源服务器OSS租用。但最舒心的方式还是自己搭建一个私有资源服务器,比如Minio。为什么选择Minio呢?因为实在是太简单易用了,功能却很强大。但Minio不注意使用的话,会存在一个超级大的信息泄露的风险。简单说,就是如果你想要提供永久性的资源下载链接,就需要把Bucket(桶)的B nohup ./ minio server ./data/ --console-address :8090 > nohup.out 2>&1 & 5.启动后会在data/生成一个. minio .sys的隐藏文件夹 vi ./data/. minio .sys/config/config.json access_key为用户名,secret_key为密码, 修改为对应值, 保存后退出, 重启应用即可 资源整理不易还请给你赞哦!!!!!!!!!!!!
//查看所有文件 final Iterable<Result<Item>> results = minio Client. list Object s(bucket.name()); for (Result<Item> result : results) { System.out.println(result.get(). object Name()); 1. Put Object 调用Put Object 接口上传文件( Object )。 public Object WriteResponse put Object (Put Object Args args) 注意事项: 添加的 Object 大小不能超过5 GB。 默认情况下,如果已存在同名 Object 且对该 Object 有访问权限,则新添加的 Object 将覆盖原有的 Object ,并返回200 OK。 OSS没有文件夹的概念,所有资源都是以文件来存储,但您可以通过创建一个以正斜线(/)结尾,大小为0的 Object
其中,SOURCE_BUCKET是源存储桶名称,TARGET_BUCKET是目标存储桶名称,--recursive参数表示递归复制整个目录树。 4. 等待 数据 复制完成后,可以使用mc工具验证目标存储桶中的 数据 是否与源存储桶一致。 需要注意的是,如果源和目标存储桶位于不同的 Minio 服务器上,需要确保两个服务器之间可以互相访问。可以使用mc工具的mirror命令进行跨服务器复制 数据 。另外,如果源存储桶中的 数据 比较大,可以考虑使用分块复制(multipart copy)功能来加速 数据 迁移。