大家好,我是程序员柏风,AI 最全的 Vibecoding 学习地图 http://coderoadmap.cn 作者。
Web 安全概览
后端 API 暴露在公网时,攻击面不在「会不会写 Spring Controller」,而在 传输、认证、授权、输入校验、日志与运维 整条链。本 track 建立 Web 安全基线,面向 Java / Spring Boot 后端工程师——先懂威胁模型,再学 TLS、CORS、认证方式与 OWASP 常见坑。
学习目标
- 用 CIA 三要素描述一次 HTTP 请求的安全目标
- 区分「机密性 / 完整性 / 可用性」在后端各层的落点
- 在 全栈路线图 中定位 web-security 节点,并规划与 http-protocol-essentials、spring-boot-essentials 的衔接
CIA 三要素
| 要素 | 含义 | 后端常见落点 |
|---|---|---|
| Confidentiality 机密性 | 未授权者读不到 | HTTPS、加密字段、最小权限 DB 账号 |
| Integrity 完整性 | 数据不被篡改 | TLS、签名、幂等键、审计日志 |
| Availability 可用性 | 服务可被合法用户使用 | 限流、WAF、补丁、容量规划 |
三者常 冲突:强加密增加 CPU;严格限流可能影响正常峰值。工程上是在 可接受风险 内做权衡,而不是「全开」或「全关」。
威胁从哪来
外部攻击者 → 公网 API / 管理端口
恶意用户 → 越权访问他人订单、刷接口
内部误操作 → 误删数据、把 .env 提交到 Git
供应链 → 依赖漏洞(Log4Shell 类事件)
后端工程师日常最该盯的三类:注入与越权(见 sec-owasp)、传输与 Cookie 配置错误(见 sec-ssl、sec-auth-cookie)、密钥与密码处理不当(见 sec-hash)。
纵深防御(Defense in Depth)
不要指望「上了 Spring Security 就安全」。典型分层:
- 网络:防火墙、仅暴露 443、管理口 VPN
- 传输:HTTPS / TLS
- 应用:输入校验、参数化 SQL、统一异常(不泄露堆栈)
- 身份:认证方式选型 + 授权
- 数据:加密存储、备份、最小权限 DB 用户
- 运维:补丁、日志、告警、密钥轮换
任一层被突破,下一层仍应 减缓损失。
与 HTTP 协议课的关系
安全不是独立魔法,而是 HTTP 语义上的约束:
- 无状态 → 会话 / Token 设计(http-cookies)
- 请求头 →
Authorization、Cookie、Origin(http-headers) - 跨域 → CORS(http-cors 与 sec-cors)
先懂协议,再谈安全策略,否则容易「抄配置但不理解为何」。
后端安全清单(预览)
本 track 最后一课 sec-practice 会完整走一遍。此处先记 五条红线:
- 生产环境 禁止 HTTP 传密码与 Token
- 密码 禁止明文或可逆加密存储
- SQL 禁止字符串拼接(MyBatis
#{}而非${}拼用户输入) - 接口 默认拒绝,显式放行公开路由
- 密钥进 环境变量 / 密钥管理,不进 Git 与日志
练习
- 画一张你负责的系统简图:浏览器 → 网关 → Spring Boot → DB,标出 CIA 各落在哪一层
- 打开 全栈路线图,找到 web-security 节点,列出其前置 track
- 阅读 http-intro,用三句话说明「无状态」如何影响会话设计
小结
CIA + 纵深防御 + HTTP 语义 是后续各课的共同语言。下一课从 OWASP Top 10 建立「常见漏洞长什么样」的直觉。