iframe嵌套網站的安全機制實現

背景:
公司內部有一套系統A部署在內網,這套系統嵌套了B網站(也是內網),只有內網才能訪問。現在需要將這個A系統暴露到公網。B系統的安全策略比較低,想快速上線并提高B系統的安全性。


通過 Nginx 代理層 設置一個 中間域名 C(如 proxy.b.com,它代理訪問真正的 B 網站,并在 C 層做 驗簽(簽名校驗)邏輯,只允許來自 A 網站的請求訪問。


? 這個方案的優勢

這是一個非常 穩妥、可控、安全性較高 的架構,具備以下優點:

優勢說明
隱藏真實 B 網站地址只有代理 C 知道 B 的地址,用戶無法繞過代理直連 B
可插入多種驗證邏輯在代理層校驗 token、Referer、Origin、IP 都可以實現
控制粒度細你可以在 Nginx 針對不同路徑做不同校驗策略
防止瀏覽器直接訪問C 的域名本身可以設置校驗策略,只允許 iframe 請求或 token 訪問

🔐 如何實現這個方案

1. 前端 A 網站 iframe 使用 C 域名
<iframe src="https://proxy.b.com/some/page?token=xyz"></iframe>
2. A 后端生成一次性 token
  • Token 可包含時間戳 + 簽名(如 HMAC)
  • Token 通過 query 或 header 傳給 C
  • 防止別人偽造
3. Nginx 中的驗簽邏輯實現方式:

Nginx 本身不擅長做復雜的簽名校驗邏輯,常見的實現有兩種方式:


? 方法一:使用 Lua + OpenResty 插件校驗 token

安裝 OpenResty 后配置:

location / {access_by_lua_block {local args = ngx.req.get_uri_args()local token = args.token-- 簡化示例:校驗 token(你可用 JWT、HMAC、時間戳等方式)if token ~= "valid_token_abc123" thenngx.status = 403ngx.say("Forbidden: Invalid token")return ngx.exit(403)end}proxy_pass https://real-b-site.com;
}

? 方法二:Nginx 僅轉發,請求先打到中間服務(如 Node/PHP)

架構圖:

A 網站 iframe -> C 域名 (Nginx) -> 驗簽服務 (如 Node) -> B 網站

在 Node 層驗證 token 簽名、Referer 等合法性,合法后轉發請求到 B。


4. 隱藏真實 B 網站地址
  • B 網站 只允許 C 代理服務器的 IP 請求(設置防火墻或 nginx 白名單)
  • 用戶即使知道 B 網站地址也無法訪問

🚫 防止被繞過的關鍵點

防繞過策略方法
禁止直連 BB 網站禁止所有外部 IP,或僅允許 C 代理服務器 IP
Token 有時效Token 攜帶時間戳,過期后失效
Token 防偽造使用密鑰簽名(如 HMAC、JWT)避免被猜出
限 Referer驗證 Referer 來源是否是 A 網站
iframe 校驗JS 檢查 window !== window.parent 拒絕獨立打開頁面

? 總結

你的 Nginx 代理層 + 驗簽邏輯 方案是可行且推薦的。它可以:

  • 保證只有 A 網站能訪問 B 的頁面(通過 C 域名)
  • 防止 Postman、瀏覽器直接訪問
  • 隱藏 B 的真實地址
  • 支持復雜的訪問控制邏輯

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/905183.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/905183.shtml
英文地址,請注明出處:http://en.pswp.cn/news/905183.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

青少年編程與數學 02-019 Rust 編程基礎 08課題、字面量、運算符和表達式

青少年編程與數學 02-019 Rust 編程基礎 08課題、字面量、運算符和表達式 一、字面量1. 字面量的分類1.1 整數字面量1.2 浮點數字面量1.3 字符字面量1.4 字符串字面量1.5 布爾字面量1.6 字節數組字面量 2. 字面量的類型推斷3. 字面量的用途4. 字面量的限制字面量總結 二、運算符…

危化品安全員職業發展方向的優劣對比

以下是危化品安全員不同職業發展方向的優劣對比&#xff1a; 縱向晉升 優勢 職業路徑清晰&#xff1a;從危化品安全員逐步晉升為安全主管、安全經理、安全總監等管理職位&#xff0c;層級明確&#xff0c;有較為清晰的上升通道。管理能力提升&#xff1a;隨著職位上升&#x…

談AI/OT 的融合

過去的十幾年間&#xff0c;工業界討論最多的話題之一就是IT/OT 融合&#xff0c;現在&#xff0c;我們不僅要實現IT/OT 的融合&#xff0c;更要面向AI/OT 的融合。看起來不太靠譜&#xff0c;卻留給我們無限的想象空間。OT 領域的專家們不要再當“九斤老太”&#xff0c;指責這…

計算機網絡核心技術解析:從基礎架構到應用實踐

計算機網絡作為現代信息社會的基石&#xff0c;承載著全球數據交換與資源共享的核心功能。本文將從網絡基礎架構、核心協議、分層模型到實際應用場景&#xff0c;全面解析計算機網絡的核心技術&#xff0c;并結合行業最新趨勢&#xff0c;為讀者構建系統的知識體系。 一、計算機…

大規模數據并行排序策略(Parallel Sample Sort)

大規模數據并行排序策略 對于上億條大型記錄的并行排序&#xff0c;基于MPI的多節點環境&#xff0c;可以采用以下策略來充分利用內存和網絡資源&#xff1a; 推薦算法&#xff1a;樣本排序(Sample Sort) 樣本排序是大規模并行排序的高效算法&#xff0c;特別適合MPI環境&am…

o.redisson.client.handler.CommandsQueue : Exception occured. Channel

1&#xff0c; 版本 <dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>2.15.2</version> </dependency>2&#xff0c;問題 2025-05-12 10:46:47.436 ERROR 27780 --- [sson-netty-5-…

Kotlin跨平臺Compose Multiplatform實戰指南

Kotlin Multiplatform&#xff08;KMP&#xff09;結合 Compose Multiplatform 正在成為跨平臺開發的熱門選擇&#xff0c;它允許開發者用一套代碼構建 Android、iOS、桌面&#xff08;Windows/macOS/Linux&#xff09;和 Web 應用。以下是一個實戰指南&#xff0c;涵蓋核心概念…

【Jenkins簡單自動化部署案例:基于Docker和Harbor的自動化部署流程記錄】

摘要 本文記錄了作者使用Jenkins時搭建的一個簡單自動化部署案例&#xff0c;涵蓋Jenkins的Docker化安裝、Harbor私有倉庫配置、Ansible遠程部署等核心步驟。通過一個SpringBoot項目 (RuoYi) 的完整流程演示&#xff0c;從代碼提交到鏡像構建、推送、滾動更新&#xff0c;逐步實…

【Git】GitHub上傳圖片遇到的問題

一開始我直接在網頁上拖拽上傳&#xff0c;會說“網頁無法正常運作”。 采用git push上去&#xff1a; git clone https://github.com/your-username/your-repo-name.git cd your-repo-name git add . git commit -m "Add large images" git push origin main報錯&…

【落羽的落羽 C++】stack和queue、deque、priority_queue、仿函數

文章目錄 一、stack和queue1. 概述2. 使用3. 模擬實現 二、deque三、priority_queue1. 概述和使用2. 模擬實現 四、仿函數 一、stack和queue 1. 概述 我們之前學習的vector和list&#xff0c;以及下面要認識的deque&#xff0c;都屬于STL的容器&#xff08;containers&#x…

用生活例子通俗理解 Python OOP 四大特性

讓我們用最生活化的方式&#xff0c;結合Python代碼&#xff0c;來理解面向對象編程的四大特性。 1. 封裝&#xff1a;像使用自動售貨機 生活比喻&#xff1a; 你只需要投幣、按按鈕&#xff0c;就能拿到飲料 不需要知道機器內部如何計算找零、如何運送飲料 如果直接打開機…

軟件安全(三)實現后門程序

如下是一個經典的后門程序 #define _WINSOCK_DEPRECATED_NO_WARNINGS 1 #include<WinSock2.h> #include<windows.h> #include<iostream> #pragma comment(lib, "ws2_32.lib")int main() {//初始化網絡環境WSADATA wsaData;int result WSAStartup…

深入理解高性能網絡通信:從內核源碼到云原生實踐

深入理解高性能網絡通信&#xff1a;從內核源碼到云原生實踐 前言 隨著互聯網業務規模的高速增長&#xff0c;服務端網絡通信能力成為系統性能的核心瓶頸。如何支撐百萬級連接、在極限場景下實現低延遲高吞吐&#xff1f;本篇博客將圍繞Linux通信機制內核剖析、性能調優實戰、…

從實戰看軟件測試與質量管理:方法、過程與質量的全景解讀

作為一名高級軟件測試工程師&#xff0c;在過往多個大型系統項目的測試工作中&#xff0c;我深刻體會到&#xff1a;軟件測試不僅是產品質量的“守門員”&#xff0c;更是項目成功的“加速器”。今天這篇文章&#xff0c;我將站在實戰角度&#xff0c;結合具體案例&#xff0c;…

Megatron系列——流水線并行

內容總結自&#xff1a;bilibili zomi 視頻大模型流水線并行 注&#xff1a;這里PipeDream 1F1B對應時PP&#xff0c;Interleaved 1F1B對應的是VPP 1、樸素流水線并行 備注&#xff1a; &#xff08;1&#xff09;紅色三個圈都為空泡時間&#xff0c;GPU沒有做任何計算 &am…

在Web應用中集成Google AI NLP服務的完整指南:從Dialogflow配置到高并發優化

在當今數字化客服領域,自然語言處理(NLP)技術已成為提升用戶體驗的關鍵。Google AI提供了一系列強大的NLP服務,特別是Dialogflow,能夠幫助開發者構建智能對話系統。本文將詳細介紹如何在Web應用中集成這些服務,解決從模型訓練到高并發處理的全套技術挑戰。 一、Dialogflow…

Wi-Fi網絡角色及功能詳解

在 Wi-Fi 網絡中&#xff0c;不同的角色和組件協同工作以實現無線通信。以下是 Wi-Fi 中的主要角色及其功能&#xff1a; 1. 基礎設施模式&#xff08;Infrastructure Mode&#xff09; 這是最常見的 Wi-Fi 網絡架構&#xff0c;包含以下核心角色&#xff1a; 接入點&#xff…

密碼學--希爾密碼

一、實驗目的 1、通過實現簡單的古典密碼算法&#xff0c;理解密碼學的相關概念 2、理解明文、密文、加密密鑰、解密密鑰、加密算法、解密算法、流密碼與分組密碼等。 二、實驗內容 1、題目內容描述 ①定義分組字符長度 ②隨機生成加密密鑰&#xff0c;并驗證密鑰的可行性 …

[C++] 一個線程打印奇數一個線程打印偶數

要求開辟兩個線程打印從0-100的數&#xff0c;一個線程打印奇數一個線程打印偶數&#xff0c;要求必須按照1,2,3,4,5,6…100這種按照順序打印 使用std::shared_mutex的版本 #ifndef PrintNumber2_H_ #define PrintNumber2_H_#include <shared_mutex>class PrintNumber2…

MySQL全量、增量備份與恢復

目錄 數據備份 一、數據備份類型 二、常見備份方法 擴展&#xff1a;GTID與XtraBackup ?一、GTID&#xff08;全局事務標識符&#xff09;? ?1. 定義與核心作用? ?2. GTID在備份恢復中的意義? ?3. GTID配置與啟用? ?二、XtraBackup的意義與核心價值? ?1. 定…