IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 使用Nginx对静态资源鉴权 -> 正文阅读

[系统运维]使用Nginx对静态资源鉴权

需求问题

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

问题分析

当前获取文件的流程如下

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

解决方案

方案1

应用服务器增加接口,所有文件都从该接口转发到文件服务器获取,并以文件流的方式返回。该方式需占用大量带宽,且前后台所有请求文件服务器的代码都需调整,后考虑使用方案二。

方案2

方案2是基于该篇文章(https://www.cnblogs.com/JQ04/p/15905762.html)调整的。
1)请求的文件地址保持不变,先跳转至应用服务器的nginx
2)转换请求路径。因为后续要请求后端进行鉴权,而http://x.x.x.x:5001/filefolder/folder1/folder2/aaa.doc的请求方式不满足后端接口形式,因此跳转前将该请求转换成了get请求入参的方式:http://x.x.x.x:5001/filefolder?addr=/folder1/folder2/aaa.doc。
3)应用服务器nginx再路由至应用做鉴权,鉴权通过后重定向会nginx服务器配置的静态资源路径。
4)再由应用服务器跳转至文件服务器获取文件。
流程如下:
在这里插入图片描述

具体实现

应用服务器nginx配置

server{
	listen 5001;
	# 文件路径前缀
	location /filefolder{
	    # 此步骤是经文件路径转换成get请求带入参的格式。
		proxy_pass http:x.x.x.x:5001/ftpFile?addr=;
	}
	# 鉴权前缀
	location /ftpFile{
		 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:5002/servername/ftpFile; 
	}
	# 静态资源前缀
	location /filefolder_static/{
		internal;
		proxy_pass http://y.y.y.y:5123/filefolder/;  #代理的静态文件目录
	}
}

中台鉴权

中台鉴权代码参考文章:https://www.cnblogs.com/JQ04/p/15905762.html
与该文章不同点:
1)前端请求文件地址时,带有cookie,通过cookie进行鉴权
2)中台请求文件地址时,无cookie,因此在鉴权接口上增加了authkey字段,要求中台传文件地址时制定传一个key。中台请求格式如下:

    http://x.x.x.x:5001/filefolder/folder1/folder2/aaa.doc&authKey=xxxxxxxx

该路径经过nginx转换参数变为

    http://x.x.x.x:5001/filefolder?addr=folder1/folder2/aaa.doc&authKey=xxxxxxxx

在鉴权接口中判断authKey正确后,即为鉴权通过。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-07-17 17:01:55  更:2022-07-17 17:04:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 12:12:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码