Web安全
基础漏洞
01前端基础【HTML】
02前端基础【CSS】
03后端基础【PHP速通】
04后端基础【PHP面向对象】
05MySQL基础操作
06前后端联动【代码练习】
07SQL注入【1】
07SQL 注入【2】
08SQL注入 Labs
08SQL注入速查表
09XSS
09跨站脚本攻击【XSS】
09XSS Labs
10跨站请求伪造【CSRF】
11服务器端请求伪造【SSRF】
12XML 外部实体注入【XXE】
13代码执行漏洞
14命令执行漏洞
15文件包含漏洞
16文件上传漏洞
17反序列化漏洞
18业务逻辑漏洞
19未授权访问漏洞集合
20跨源资源共享【CORS】
21SSTI模板注入
22并发漏洞
23点击劫持【Clickjacking 】
24请求走私
25路径遍历
26访问控制
27身份验证漏洞
28WebSocket
29Web缓存中毒
30HTTP 主机头攻击
31信息泄露漏洞
32原型污染
33NoSQL注入
API 安全
01web应用程序
02HTTP协议
03API概述
04分类类型
05交换格式
06身份验证
07常见API漏洞
08crAPI靶场
09JWT
10OAuth 2.0身份验证
11GraphQL【1】
11GraphQL【2】
12DVGA靶场
13服务器端参数污染
14API文档
15API Labs
16OAuth Labs
17GraphQL API Labs
18JWT Labs
小程序
小程序抓包
数据库
MySQL
Oracle
MongoDB
Redis
PostgreSQL
SQL server
中间件
Nginx
Apache HTTP Server
IIS
Tomcat
框架
ThinkPHP
Spring
Spring Boot
Django
访问控制
-
+
首页
中间件
Web 应用程序中间件(Web Application Middleware)是**介于客户端(如浏览器、移动 App)与 Web 应用程序核心业务逻辑之间,或介于应用程序各组件之间的独立软件层**。 它主要用于解决 Web 系统中的共性问题(如通信、认证、缓存、负载均衡等),简化开发流程、提升系统性能与可扩展性,并实现业务逻辑与底层基础设施的解耦。 ## 定位 在典型的 Web 架构中,中间件处于 “承上启下” 的关键环节,具体层级如下(从客户端到后端): **客户端层**:用户直接交互的终端(浏览器、手机 App、桌面软件等); **(可选)CDN 层**:内容分发网络(如阿里云 CDN、Cloudflare),属于广义中间件的延伸; **中间件层**:Web 服务器、API 网关、认证中间件、缓存中间件等(核心讨论对象); **应用程序层**:业务逻辑代码(如 Java Spring Boot、Python Django、Node.js Express 应用); **数据层**:数据库(MySQL、PostgreSQL)、存储系统(MongoDB、MinIO)等。 简单来说,中间件的作用是 **“替应用程序处理杂事”**—— 让开发者专注于业务逻辑(如 “用户下单”“商品查询”),而无需重复开发 “如何接收 HTTP 请求”“如何验证用户身份”“如何减轻数据库压力” 等通用功能。 ## 作用 中间件通过标准化接口提供服务,核心价值可归纳为以下 4 点: **解耦**:隔离应用程序与底层依赖(如数据库、操作系统),例如数据访问,中间件让应用无需关心数据库的具体连接方式。 **复用**:将通用功能(如认证、日志)封装为中间件,多应用可共享使用,避免重复开发。 **增强性能**:通过缓存、负载均衡、异步处理等机制,降低系统响应时间、提升并发能力。 **简化维护**:中间件独立部署与升级,例如替换缓存中间件(从 Memcached 到 Redis)时,无需修改业务代码。 ## 类型及实例 | 类型 | 核心功能 | 典型实例 | | ----------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | | Web 服务器中间件 | 接收客户端 HTTP 请求、静态资源(HTML/CSS/JS)分发、请求转发、负载均衡 | Nginx、Apache HTTP Server、IIS | | 应用服务器中间件 | 运行动态业务逻辑(如解析 JSP、处理 Servlet)、管理应用生命周期 | Tomcat、JBoss/WildFly、Jetty、WebLogic | | API 网关中间件 | 统一 API 入口、路由转发、请求限流、接口鉴权、日志监控(微服务架构核心) | Spring Cloud Gateway、Kong、APISIX | | 身份认证中间件 | 处理用户登录、权限验证、Token 管理(如 OAuth2.0、JWT) | Keycloak、Auth0、Spring Security OAuth2 | | 缓存中间件 | 暂存高频访问数据(如用户会话、热点商品),减少数据库查询压力 | Redis、Memcached、Elasticsearch(部分场景) | | 数据访问中间件 | 数据库连接池管理、SQL 优化、分库分表、读写分离 | MyBatis、Hibernate、Sharding-JDBC | | 消息队列中间件 | 实现应用间异步通信、削峰填谷(应对高并发请求)、解耦服务依赖 | RabbitMQ、Kafka、RocketMQ、ActiveMQ | | 日志 / 监控中间件 | 收集系统日志、监控应用性能(如响应时间、错误率)、告警通知 | ELK Stack(Elasticsearch+Logstash+Kibana)、Prometheus+Grafana | ## Web服务器中间件 Web 服务器中间件(Web Server Middleware)是**直接面向客户端(浏览器、App 等)的核心基础设施**,位于 Web 架构的 “前端入口层”,主要负责接收、解析 HTTP/HTTPS 请求,分发静态资源(如 HTML、CSS、图片),并通过反向代理衔接后端应用服务器(如 Tomcat、Node.js 服务)。它是实现 Web 系统高并发、高可用的 “第一道防线”,也是开发者接触最多的中间件类型之一。 > 定位 明确 **Web 服务器中间件与应用服务器的核心区别**。 | 维度 | Web 服务器(如 Nginx) | 应用服务器(如 Tomcat) | | -------- | ------------------------------------------------ | ------------------------------------------------------ | | 核心职责 | 处理 HTTP 请求、分发静态资源、反向代理、负载均衡 | 运行动态业务逻辑(如解析 JSP、执行 Servlet、处理 API) | | 处理内容 | 静态资源(图片、JS、CSS)+ 请求转发 | 动态内容(用户订单、数据查询结果) | | 性能特点 | 高并发(支持万级以上 TCP 连接)、低资源消耗 | 并发能力较弱(通常千级)、资源消耗较高 | | 典型搭配 | 作为 “前端入口”,转发动态请求到应用服务器 | 作为 “后端节点”,接收 Web 服务器的转发请求 | 简单来说:**Web 服务器是 “接待员”**,负责引导客户(客户端请求),快速交付现成资料(静态资源),复杂需求(动态业务)则转交 “业务专员”(应用服务器)处理。 > 核心功能 Web 服务器的所有能力都围绕 “高效处理客户端请求” 展开,核心功能可归纳为 6 类,且每类功能都对应实际业务痛点: **1. HTTP/HTTPS 请求处理** - 请求解析:接收客户端发送的 HTTP 请求(如 GET/POST 方法),解析请求头(Host、User-Agent、Cookie)、请求体(如表单数据、JSON)。 - 响应构建:根据请求结果(静态资源或应用服务器返回的动态内容),构建 HTTP 响应(包含状态码、响应头、响应体),返回给客户端。 - HTTPS 支持:内置 SSL/TLS 协议栈,实现证书管理、加密解密(如 TLS 1.2/1.3),保障数据传输安全(避免请求被窃听或篡改)。 场景示例:用户访问`https://www.example.com/index.html`,Web 服务器解析请求后,直接返回本地存储的`index.html`文件,并通过 HTTPS 加密传输。 **2. 静态资源服务** Web 服务器对静态资源(不依赖业务逻辑生成的文件)的处理效率远高于应用服务器,这是其核心优势之一: - 资源定位:根据请求 URL(如`/images/logo.png`)映射到服务器本地文件路径(如`/var/www/static/images/logo.png`)。 - 缓存控制:通过设置 HTTP 响应头(如`Cache-Control`、`Expires`),指导浏览器缓存静态资源(如图片缓存 7 天),减少重复请求。 - 压缩优化:自动对 JS、CSS、HTML 进行 Gzip/Brotli 压缩,减小文件体积(通常压缩率 30%-70%),提升客户端加载速度。 场景示例:电商网站的商品图片、首页 CSS 样式表,均通过 Web 服务器直接分发,避免占用应用服务器资源。 **3. 反向代理(Reverse Proxy)** 这是 Web 服务器最关键的 “衔接能力”,也是分布式架构的基础: 原理:客户端不直接访问后端应用服务器(如 Tomcat),而是将请求发送给 Web 服务器;Web 服务器再将请求 “转发” 到后端服务,最后将后端的响应结果返回给客户端。 作用: - 隐藏后端服务地址,提升安全性(客户端无法直接访问应用服务器 IP); - 统一入口,简化客户端配置(只需记住 Web 服务器域名,无需关心后端有多少节点); - 隔离前后端,后端服务可灵活升级、扩容,不影响客户端。 场景示例:用户访问`https://api.example.com/order`,Web 服务器(Nginx)将该请求转发到后端 3 台 Tomcat 服务器中的任意一台,客户端完全感知不到后端的 “多节点” 存在。 **负载均衡(Load Balancing)** 当后端应用服务器为 “多节点集群” 时,Web 服务器可通过负载均衡将请求均匀分发,避免单点故障和资源浪费: 常见调度策略: - 轮询(Round Robin):按顺序依次分发请求到每个后端节点(适合节点性能一致的场景); - 加权轮询(Weighted Round Robin):性能强的节点分配更高权重(如给 4 核 CPU 节点权重 4,2 核节点权重 2); - IP 哈希(IP Hash):根据客户端 IP 计算哈希值,固定分发到某一节点(适合需要 “会话保持” 的场景,如用户登录状态); - 最小连接数(Least Connections):优先将请求分发到当前连接数最少的节点(适合请求处理时间不均的场景)。 场景示例:电商大促期间,后端部署 10 台 Tomcat 处理订单请求,Nginx 通过 “加权轮询” 将 80% 的请求分发到性能更强的 6 台服务器,保障系统不崩溃。 **5. 请求过滤与重写** 通过规则配置,对请求进行 “预处理” 或 “修正”,满足灵活的业务需求: - 请求过滤:基于 URL、IP、请求头过滤请求(如禁止某 IP 段访问后台管理页面,或拦截带有恶意参数的请求); - URL 重写:将客户端请求的 URL 转换为后端可识别的格式(如将`https://example.com/product/123`重写为`https://example.com/product?id=123`); - 防盗链:通过`Referer`头限制资源仅允许指定域名引用(防止其他网站盗用自己的图片、视频资源)。 场景示例:博客网站通过 “防盗链” 配置,仅允许`blog.example.com`引用图片资源,避免其他网站直接链接自己的图片消耗带宽。 **6. SSL/TLS 终结(SSL Termination)** 将 HTTPS 加密解密工作 “转移” 到 Web 服务器,减轻应用服务器的负担: - 原理:客户端与 Web 服务器建立 HTTPS 连接,Web 服务器完成证书验证、密钥交换、数据解密后,再通过 HTTP 协议将明文请求转发给后端应用服务器;后端返回的明文响应,由 Web 服务器加密后返回给客户端。 - 价值:应用服务器无需处理复杂的加密计算,专注于业务逻辑,提升整体性能(尤其高并发场景下,可减少 30% 以上的 CPU 消耗)。 场景示例:大型 API 服务集群中,所有 HTTPS 请求均由 Nginx 完成解密,后端 Node.js 服务仅处理 HTTP 请求,显著提升 API 响应速度。 > 主流Web服务器中间件产品 | 名称 | 特点 | 适用场景 | | ------------------------------------ | ----------------------------------------------------------- | ---------------------------------------------------------- | | Nginx | 轻量级、异步非阻塞 IO 模型、配置简洁、支持热部署。 | 高并发场景(电商、社交、API 服务)、反向代理 / 负载均衡。 | | Apache HTTP Server | 模块化架构(支持数千个扩展模块)、配置灵活、兼容性强。 | 需丰富扩展的场景(如 URL 重写、认证插件)、传统 Web 应用。 | | IIS(Internet Information Services) | 微软官方产品、与 Windows Server 深度集成、支持ASP.NET生态。 | Windows 服务器环境、.NET 技术栈应用(如ASP.NET网站)。 |
毛林
2025年9月12日 20:25
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码