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.pswp.cn/web/79158.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/79158.shtml
英文地址,請注明出處:http://en.pswp.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…