Nginx静态资源增加权限验证

Nginx静态资源增加权限验证

    • 一、前言
    • 二、解决思路
      • 2.1、方式一
      • 2.2、方式二
    • 三、代码
      • 3.1、方式一
        • 3.1.1、前端代码
        • 3.1.2、后端代码
        • 3.1.3、Nginx调整
        • 3.1.4、注意事项
      • 3.2.方式二
    • 四、参考资料

一、前言

在项目开发的过程中,项目初期,及大部分小型项目都是使用共享磁盘进行静态文件的存储。比如图片,视频等。
在调用接口存储至服务器后,返回文件路径,然后通过Nginx的代理,直接访问文件。
该方式如果在内部网络,问题并不会特别明显。如果暴露在互联网之后,就会有信息泄露的风险。
如果系统文件存储的方式存在一定的规律,如用时间拆分存储,那么便可以通过遍历文件的方式入侵系统获取文件,风险很大。


二、解决思路

2.1、方式一

对于二次开发的项目,涉及的面比较广,一个一个的修改会很耗时。通过简化处理减少改动量。
具体如下:
1、系统登录之后,需要存储token认证信息。
2、在需要访问文件的时候,带入token,在Nginx中鉴权,调用 权限认证接口
3、认证成功则返回文件,反之则拒绝访问。

流程如下:
在这里插入图片描述


2.2、方式二

如果在项目搭建初期,可以采用独立鉴权的方式处理该问题。引入鉴权码的概念。通过鉴权码做一层防火墙。
具体如下:
1、系统登录之后,需要存储token认证信息。
2、在需要访问文件的时候,先调用系统 权限获取接口,传输 文件名称、token。
3、后端根据token、文件名称鉴权。
3.1、当前token是否生效。
3.2、当前token的用户是否拥有该文件的权限。
4、鉴权完成获取鉴权码。
5、使用鉴权码,调用Nginx获取附件,在Nginx中鉴权,调用 权限认证接口
6、认证成功则返回文件,反之则拒绝访问。

流程如下:
在这里插入图片描述


三、代码

3.1、方式一

3.1.1、前端代码

在登录成功之后需要往cookie中存放token。如果已经存在,则不需要处理。

cookies最大4K,token不能超过,不然会设置不上。


3.1.2、后端代码
@GetMapping("/isLgn")
@ResponseBody
public void isLgn(HttpServletResponse response) {try {String token = SessionUtil.getRequest().getHeader("token");if(StringUtils.isEmpty(token)){String cookie = SessionUtil.getRequest().getHeader("cookie");log.info("this cookie is:" + cookie);token = extractToken(cookie);}if(StringUtils.isEmpty(token)){response

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/79158.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分析NVIDIA的股价和业绩暴涨的原因

NVIDIA自2016年以来股价与业绩的持续高增长,是多重因素共同作用的结果。作为芯片行业的领军企业,NVIDIA抓住了技术、战略、市场与行业趋势的机遇。以下从技术创新、战略布局、市场需求、财务表现及外部环境等维度,深入分析其成功原因&#xf…

更换芯片后因匝数比变化,在长距离传输时出现通讯问题。我将从匝数比对信号传输的影响、阻抗匹配等方面分析可能原因,并给出相应解决方案。

匝数比影响信号幅度与相位:原 HM1188 芯片匝数比 1:1,信号在变压器原副边传输时幅度基本不变;更换为 XT1188 芯片(匝数比 1:2)后,根据变压器原理,副边输出信号幅度会变为原边的 2 倍。短距离 10…

Python引领前后端创新变革,重塑数字世界架构

引言:Python 在前后端开发的崭新时代 在当今数字化时代,软件开发领域持续创新,而 Python 作为一门功能强大、应用广泛的编程语言,正引领着前后端开发的变革浪潮。Python 以其简洁易读的语法、丰富的库和框架生态系统,以及强大的跨领域适用性,在计算机领域占据了举足轻重…

IP SSL证书常见问题助您快速实现HTTPS加密

一、什么是IP SSL证书? IP SSL证书是一种专门用于保护基于IP地址的网站或服务器的SSL证书。与传统的域名SSL证书不同,它不需要绑定域名,而是直接与公网IP地址关联。当用户访问该IP地址时,浏览器与服务器之间会建立加密连接&#…

「Mac畅玩AIGC与多模态27」开发篇23 - 多任务摘要合成与提醒工作流示例

一、概述 本篇基于兴趣建议输出的方式,扩展为支持多任务输入场景,介绍如何使用 LLM 对用户输入的多项待办事项进行摘要整合、生成重点提醒,并保持自然语言风格输出,适用于任务总结、进度引导、日程提醒等轻量型任务生成场景。 二…

前端自学入门:HTML 基础详解与学习路线指引

在互联网的浪潮中,前端开发如同构建数字世界的基石,而 HTML 则是前端开发的 “入场券”。对于许多渴望踏入前端领域的初学者而言,HTML 入门是首要挑战。本指南将以清晰易懂的方式,带大家深入了解 HTML 基础,并梳理前端…

js 两个数组中的指定参数(id)相同,为某个对象设置disabled属性

在JavaScript中,如果想要比较两个数组并根据它们的id属性来设置某个对象的disabled属性为true,你可以使用几种不同的方法。这里我将介绍几种常用的方法: 方法1:使用循环和条件判断 const array1 [{ id: 1, name: Item 1 },{ id…

编写大模型Prompt提示词方法

明确目标和任务 // 调用LLM进行分析const prompt 你是一名严格而友好的英语口语评分官,专业背景包括语音学(phonetics)、二语习得(SLA)和自动语音识别(ASR)。你的任务是: ① 比对参…

MCP系列(一)什么是MCP?

MCP 是什么:从 USB-C 到 AI 的「万能接口」哲学 MCP(Model Context Protocol,模型上下文协议) 是Anthropic于2024年11月推出的AI跨系统交互标准,专为解决LLM(大语言模型)的「数字失语症」——让…

NoMachine 将虚拟显示器改为物理显示器

一、前言 大多数服务器需求是设置为虚拟显示器,因为服务器本身不接物理的显示器。但我的需求不太一样,服务器就在身边,有时候关闭远控也需要实时监测,所以接了物理的显示器。 NoMachine 默认会为用户创建一个新的桌面会话&#xf…

YOLOv8 优化:基于 Damo-YOLO 与 DyHead 检测头融合的创新研究

文章目录 YOLOv8 的背景与发展Damo-YOLO 的优势与特点DyHead 检测头的创新之处融合 Damo-YOLO 与 DyHead 检测头的思路融合后的模型架构融合模型的代码实现导入必要的库定义 Damo-YOLO 的主干网络定义特征金字塔网络(FPN)定义 DyHead 检测头定义融合后的…

关税冲击下,FBA国际物流企业如何靠智能拓客跑出增长“加速度”?

国际物流行业正迎来前所未有的增长机遇。据中研普华最新报告,2025年全球物流市场规模已突破6.27万亿美元,其中中国跨境物流市场预计达2.71万亿元。在全球化与数字化双轮驱动下,国际物流从“规模扩张”迈向“价值重构”。可以说,国…

《内存单位:解锁数字世界的“度量衡”》

🚀个人主页:BabyZZの秘密日记 📖收入专栏:C语言 🌍文章目入 一、基础单位:字节(Byte)二、进阶单位:千字节(KB)、兆字节(MB&#xff09…

PyQt 探索QMainWindow:打造专业的PyQt5主窗

在PyQt5的世界里,窗口的创建和管理是构建图形用户界面(GUI)的基础。QMainWindow作为主窗口类,为开发者提供了强大而灵活的应用程序框架。今天,就让我们一起深入了解QMainWindow的奥秘。 QMainWindow简介 QMainWindow…

Missashe高数强化学习笔记(随时更新)

Missashe高数强化学习笔记 说明:这篇笔记用于博主对高数强化课所学进行记录和总结。由于部分内容写在博主的日记博客里,所以博主会不定期将其重新copy到本篇笔记里。 第一章 函数极限连续 第二章 一元函数微分学 第三章 一元函数积分学 第一节 不定…

Ruby 字符串(String)

Ruby 字符串(String) 引言 在编程语言中,字符串是表示文本数据的一种基本数据类型。在Ruby中,字符串处理是日常编程中非常常见的一项任务。本文将详细介绍Ruby中的字符串(String)类型,包括其创…

【wpf】12 在WPF中实现HTTP通信:封装HttpClient的最佳实践

一、背景介绍 在现代桌面应用开发中,网络通信是不可或缺的能力。WPF作为.NET平台下的桌面开发框架,可通过HttpClient轻松实现与后端API的交互。本文将以一个实际的HttpsMessages工具类为例,讲解如何在WPF中安全高效地封装HTTP通信模块。 二、…

【2025最新】gitee+pycharm完成项目的上传与管理

再见了误删、误改以及不知道动了哪里突然就不能运行的整个项目! 之前做过一次全流程!结果没有及时记录文档,很快就忘记了,每次从头开始就觉得有很大的阻力,不想搞。导致每次误删和项目出bug都非常痛苦。 可见&#x…

ACTF2025 - Web writeup

ACTF2025 - Web writeup ACTF upload 进去后是一个登录界面,输入用户名后登录,然后到一个文件上传的界面。 在 /upload?file_path 处,可以实现任意文件读取,文件内容保存在 img 标签中的 base64 值中。 示例请求:…

BERT模型讲解

BERT的模型架构 BERT: Bidirectional Encoder Representations from Transformers BERT这个名称直接反映了:它是一个基于Transformer编码器的双向表示模型。BERT通过堆叠多层编码器来构建深度模型。举例来说: BERT-Base:堆叠了12层Encoder&a…