章节摘要:本章给洋葱套甲——先把常见的 Web 攻击面画成威胁图谱,再用安全响应头与 CSRF 对策封住浏览器侧的洞,然后完整实现 JWT 鉴权中间件,最后用 HTTPS 与输入验证把传输与数据两道门关严。
前六章的服务已经功能完备,但还过不了上线评审。本章主线就是这份评审清单的逐项打钩:威胁建模(哪些口子开着,7.1)、浏览器侧防护(安全头与 CSRF,7.2 前半)、身份验证(JWT 鉴权层的完整实现,7.2 后半)、传输与数据侧加固(HTTPS 与输入验证,7.3)。安全知识容易碎片化,本章的组织方式是把每一项对策都挂回洋葱模型的具体层:威胁在进层前被限流与校验拦截,身份在鉴权层确认,安全头在出层补齐——安全不是一堆散装技巧,是一组各有位置的层。
本章拐点在 7.2 的鉴权实现:多数教程把 JWT 讲成"签个 token 存起来",工程问题——过期了怎么办、角色放哪里、密钥怎么轮换——全都没讲。拐点在于意识到鉴权层的难点从来不是算法,是生命周期管理。结论随之立住:安全的本质是把信任边界显式化——每一层明确声明"我信任什么、不信任什么",越权、注入、穿越这些攻击全部是信任边界模糊的直接后果。
防护层的纵深结构如下图。

误解比漏洞更常害项目,先把三个高频误解拆掉。误解一:上了 HTTPS 就安全了——HTTPS 只管传输加密,XSS、CSRF、越权在加密通道里照常发生,7.1 的威胁图谱一个都不少。误解二:JWT 无状态所以无需管理——签发后难以作废恰恰是 JWT 的软肋:登出无法立刻生效、改权限有延迟,所以要靠短有效期加刷新凭证加黑名单的组合拳,7.2 会给出工程答案。误解三:安全是上线前的突击检查——本章的每个对策都以"层"的形态接入装配序列,跟日志、限流一样属于日常工程而非附加工序;安全评审之所以留到最后,是因为它是清单核对,不是能力补课。
甲胄齐备,服务要开始考虑"跑得久"的问题了。下一章进入稳态运行:性能剖析找到真凶、压缩缓存与部署扩展撑起流量、测试与监控保障质量——那是把服务从"能跑"带到"敢上线"的最后一程。