使用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直接转发到文件服务器的,没有经过应用系统鉴权,好处就是获取文件无需暂用应用服务器带宽,速度较快。但也产生了未授权访问的问题。 应用服务器增加接口,所有文件都从该接口转发到文件服务器获取,并以文件流的方式返回。该方式需占用大量带宽,且前后台所有请求文件服务器的代码都需调整,后考虑使用方案二。 方案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)再由应用服务器跳转至文件服务器获取文件。 流程如下: 中台鉴权代码参考文章: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正确后,即为鉴权通过。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |