文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

PHP Nginx静态资源转临时地址访问

2023-10-03 18:44

关注

前言

很多小伙伴对Nginx并不陌生,来代理网站页面或者代理文件资源,配置简单,灵活。但是若出现像带权限的来访问Nginx的静态资源时,那简单的配置将不生效。

需求

公司渗透测试扫描发现了一个未授权访问文件的问题,即外网可以通过文件地址直接访问文件服务器中文件,无需任何认证,造成公司敏感数据泄露。

需要分析

我们的文件地址形如:http://y.y.y.y/video/2022/11/26/video_202211260104258u6j16128.mp4(y.y.y.y是应用服务器IP或域名)
1、请求地址到应用服务器
2、应用服务器(x.x.x.x)再通过nginx转发到文件服务器,获取到对应文件。
3、获取到文件后直接返回,如果是返回前端,即可做图片预览,文件下载,视频播放等功能。此外中台应用功能,如发送邮件时,也是直接调用的文件地址获取附件。
该地址是在应用服务器通过nginx直接转发到文件服务器的,没有经过应用系统鉴权,好处就是获取文件无需暂用应用服务器带宽,速度较快。但也产生了未授权访问的问题。
流程如下:
在这里插入图片描述

准备

需要用到的只是,工具
thinkphp
nginx
一些文件

具体实现

应用服务器Nginx配置

server{    listen       80;    listen  [::]:80;        .    .    .    # 视频地址前缀    location /file {        proxy_redirect off;        proxy_set_header Host  $host;        proxy_set_header X-Real-IP $remote_addr;        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;        # 指定提供文件鉴权服务的地址        proxy_pass http://x.x.x.x/index/auth;    }    # 静态资源前缀    location /resource{        internal;        proxy_pass http://y.y.y.y/;    }}

业务代码

path), rand(0, 24), 8)            . "-"            . substr(md5($this->path), rand(0, 28), 4)            . "-"            . substr(md5($this->path), rand(0, 28), 4)            . "-"            . substr(md5($this->path), rand(0, 28), 4)            . "-"            . substr(md5($this->path), rand(0, 20), 12);    }// 获取视频地址接口    public function getFilePath(): string    {        $str = $this->random();        $this->app->cache->set($str, $this->path);        $result = $this->local_domain . 'video?path=' . $str;        return "";    }// 判断当前视频是否访问过,访问过“地址失效”,否则可以访问    public function auth(Request $request) {        $path = $request->get('path');        if (!empty($request->header('referer'))) {             $res = $this->app->cache->get($path);             if ($res) {                 header('X-Accel-Redirect: ' . $this->route . $res);             } else {                 echo "地址失效";             }        } else {            echo "地址失效";        }    }}

请求

http://x.x.x.x/index/getFilePath#生成临时视频地址,返回给前端视频播放标签#前端视频渲染自动请求server里 /file# nginx代理到authhttp://x.x.x.x/index/auth# 检测当前视频链接是否被访问过,访问过,连接失效,否则,正常执行# 注意:此处为重点 header内X-Accel-Redirect 就是回调Nginx静态前缀的关键所在前面所提到的允许内部访问,即此处处理# header('X-Accel-Redirect: ' . $this->route . $res); ; 内连接请求server里面的/resource# 然后跳转到文件服务器http://y.y.y.y/video/2022/11/26/video_202211260104258u6j16128.mp4'

来源地址:https://blog.csdn.net/weixin_44961480/article/details/128074005

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯