{"name":"Web安全","id":"计算机网络-网络安全-Web安全","content":"# Web 安全\n\n## 一、Web 安全的第一性原理\n\n### 1.1 四个不可动摇的事实\n\n1. **所有外部输入都是不可信的**（用户、网络、第三方系统）\n2. **客户端永远不可信**（浏览器、App、脚本可被完全控制）\n3. **网络永远不可信**（可被监听、篡改、重放）\n4. **依赖永远可能被污染**（第三方库、构建链、运行环境）\n\n> Web 安全的本质：\n> **在一个完全不可信的环境中，完成可信计算与可信决策。**\n\n---\n\n### 1.2 核心安全设计原则（稳定知识）\n\n* **默认拒绝（Default Deny）**：未显式允许的一律禁止\n* **最小权限（Least Privilege）**：只给完成任务所需的最小能力\n* **纵深防御（Defense in Depth）**：单点失效不可导致系统失守\n* **数据与代码分离**：数据永远不能被解释为指令\n* **不可预测性**：令牌、随机数必须不可推断\n* **信任边界清晰化**：跨边界必校验\n\n这些原则在任何时代、任何语言、任何架构下都成立。\n\n---\n\n## 二、统一安全认知模型\n\n### 2.1 信任边界模型（Trust Boundary）\n\nWeb 系统天然存在多层信任边界：\n\n* 浏览器边界（用户控制）\n* 网络边界（公网 / 内网）\n* 服务边界（服务与服务）\n* 数据边界（数据库、缓存、文件）\n* 运维与供应链边界\n\n> **所有安全问题，本质都是“跨信任边界时缺乏约束”。**\n\n---\n\n### 2.2 攻击面的统一划分\n\n| 攻击面 | 说明               | 典型问题     |\n| --- | ---------------- | -------- |\n| 输入面 | 参数、表单、Header、文件  | 注入、越权    |\n| 执行面 | 模板、解释器、反序列化      | RCE、XSS  |\n| 存储面 | DB、缓存、对象存储       | 数据泄露     |\n| 输出面 | HTML、JSON、Header | XSS、信息泄露 |\n| 控制面 | 身份、权限、会话         | 权限绕过     |\n| 依赖面 | 库、镜像、CI/CD       | 供应链攻击    |\n\n---\n\n## 三、浏览器与客户端侧安全（不可信执行环境）\n\n### 3.1 同源策略：浏览器侧的第一道信任边界\n\n**本质**：\n\n> 限制不同源之间的读写能力，而非通信能力。\n\n* 同协议 + 同域名 + 同端口 = 同源\n* 绕过同源 → 直接导致 XSS、CSRF、数据窃取\n\n同源策略是浏览器安全模型的根基，而非“一个功能”。\n\n---\n\n### 3.2 浏览器沙箱\n\n**核心思想**：\n\n* 不可信代码必须运行在受限环境\n* 跨沙箱访问只能通过受控 API\n* 默认拒绝，显式授权\n\n---\n\n### 3.3 点击劫持\n\n**本质**：\n\n> 用户的“真实意图”被 UI 层欺骗\n\n防御策略：\n\n* 明确 UI 所属边界（X-Frame-Options / CSP frame-ancestors）\n\n---\n\n## 四、输入 → 执行：注入类攻击的统一模型\n\n### 4.1 注入攻击的第一性原理\n\n> **当数据被解释为代码时，注入就发生了。**\n\n所有注入攻击（SQL / XSS / 命令 / XML / 模板）共享同一结构：\n\n* 可控输入\n* 可解释执行\n* 缺乏结构化约束\n\n### 4.2 XSS（跨站脚本）\n\n**信任错误**：\n\n* 信任了来自用户的数据\n* 信任了浏览器的解析行为\n\n**防御本质**：\n\n* 输出编码（Context-Aware Encoding）\n* CSP 约束执行能力\n* Cookie 与 JS 隔离（HttpOnly）\n\n---\n\n### 4.3 SQL 注入\n\n**本质不是 SQL**，而是：\n\n> **字符串拼接 + 可解释执行**\n\n防御抽象：\n\n* 结构化查询（预编译）\n* 数据类型约束\n\n---\n\n### 4.4 反序列化漏洞\n\n**本质**：\n\n> 将不可信数据恢复为“可执行对象”\n\n防御方向：\n\n* 限制可反序列化类型\n* 执行期行为检测（RASP）\n\n---\n\n## 五、身份、权限与控制面安全\n\n### 5.1 权限失效的统一成因\n\n* 默认允许而非默认拒绝\n* 权限判断分散在业务逻辑中\n* 信任了前端状态或参数\n\n> **权限是系统级能力，不是接口级 if 判断。**\n\n---\n\n### 5.2 CSRF：被借用的身份\n\n**本质**：\n\n> 浏览器自动携带身份，但请求并非用户真实意图\n\n防御抽象：\n\n* 身份 ≠ 意图\n* 必须引入不可伪造的用户参与证明（Token / Challenge）\n\n---\n\n### 5.3 会话与 Token 设计\n\n* 生命周期最小化\n* 明确撤销能力\n* 区分认证（Authentication）与授权（Authorization）\n\n---\n\n## 六、服务端与基础设施安全\n\n### 6.1 SSRF：被代理的信任\n\n**发生条件**：\n\n* 服务端拥有更高网络权限\n* 用户可控请求目标\n\n防御核心：\n\n* 明确“服务端可以访问什么”\n* 白名单而非黑名单\n\n---\n\n### 6.2 路径穿越\n\n**本质**：\n\n> 文件系统信任了用户提供的路径结构\n\n---\n\n### 6.3 敏感数据保护\n\n抽象层次：\n\n* 数据分类分级\n* 生命周期最小化\n* 存储 / 传输 / 使用全链路保护\n\n---\n\n## 七、加密、随机性与密码学误用\n\n### 7.1 密码学失败的通用模式\n\n* 算法正确，使用方式错误\n* 随机性不足\n* 密钥管理失控\n\n> **密码学不是函数调用，而是系统工程。**\n\n---\n\n## 八、供应链与 DevSecOps\n\n### 8.1 供应链攻击本质\n\n> 利用“信任传递”进行横向污染\n\n覆盖环节：\n\n* 开发\n* 构建\n* 依赖\n* 发布\n\n---\n\n### 8.2 DevSecOps\n\n安全左移：\n\n* 静态分析\n* 依赖审计\n* 模糊测试\n* 自动化策略执行\n\n---\n\n## 九、拒绝服务与资源治理\n\n### 9.1 应用层 DoS\n\n**本质**：\n\n> 不对称资源消耗\n\n治理方向：\n\n* 资源隔离\n* 成本放大最小化\n* 异常模式识别\n\n## 关联内容（自动生成）\n\n- [/计算机网络/网络安全/安全架构.md](/计算机网络/网络安全/安全架构.md) 详细阐述了网络安全架构的设计原则和模型，与Web安全中的信任边界模型、安全设计原则有直接关联\n- [/计算机网络/网络安全/认证与授权.md](/计算机网络/网络安全/认证与授权.md) 深入探讨了身份认证与授权机制，是Web安全中身份、权限与控制面安全的具体实现方案\n- [/计算机网络/网络安全/业务安全.md](/计算机网络/网络安全/业务安全.md) 从业务角度分析安全问题，与Web安全中的权限失效、业务逻辑漏洞等有密切联系\n- [/计算机网络/网络安全/网络安全技术.md](/计算机网络/网络安全/网络安全技术.md) 涵盖了XSS、CSRF、SQL注入等具体安全漏洞和防护技术，是对Web安全中注入类攻击、客户端安全的详细补充\n- [/计算机网络/网络安全/渗透测试.md](/计算机网络/网络安全/渗透测试.md) 介绍安全测试方法和工具，有助于验证Web安全防护措施的有效性\n- [/软件工程/架构/Web前端/Web前端.md](/软件工程/架构/Web前端/Web前端.md) 涵盖前端开发技术，与Web安全中的浏览器侧安全、同源策略、CSP等概念密切相关\n- [/软件工程/架构/Web前端/前后端分离.md](/软件工程/架构/Web前端/前后端分离.md) 探讨前后端分离架构，涉及跨域安全、认证授权等与Web安全直接相关的问题\n- [/操作系统/安全.md](/操作系统/安全.md) 介绍操作系统层面的安全机制，为Web应用提供底层安全保障，与Web安全中的纵深防御理念相呼应\n- [/计算机网络/http/Cookie&Session.md](/计算机网络/http/Cookie&Session.md) 详细说明Cookie与Session的实现和管理，是Web安全中会话安全的重要实践\n- [/计算机网络/网络安全/网络安全隔离技术.md](/计算机网络/网络安全/网络安全隔离技术.md) 探讨网络隔离技术，与Web安全中的信任边界模型共同构建纵深防御体系\n- [/计算机网络/应用层.md](/计算机网络/应用层.md) 介绍应用层协议和安全，与Web安全中的HTTP相关安全威胁和防护措施直接相关\n- [/计算机网络/网络安全/密码学/密码学.md](/计算机网络/网络安全/密码学/密码学.md) 提供密码学基础，为Web安全中的身份认证、数据传输加密、数字签名等提供理论支持\n","metadata":"tags: ['安全', '网络']\nbooks: [\n  {name: '白帽子讲Web安全'}\n]","hasMoreCommit":false,"totalCommits":1,"commitList":[{"date":"2026-06-14T21:48:35+08:00","author":"MY","message":"fix(PinyinUtils): 修复拼音转换丢失末尾字符问题","hash":"c0b8439d5c7106db9384632f106863adc22dbf8c"}],"createTime":"2026-06-14T21:48:35+08:00"}