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.mzph.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. 定…