网站安全一本通
沿着一次 HTTP 请求的完整旅程,逐层拆解网站安全——域名与 DNS、CDN 与负载均衡、Nginx、前端、后端、依赖组件、架构与运维,每一层讲清真实的攻击手法、可复制的配置与能立刻上手的验证命令。
序 · 安全不是一个功能,是一条链
大多数「网站安全」的资料有个共同毛病:它们是按漏洞名称组织的。XSS 一章、SQL 注入一章、CSRF 一章,读完你记住了一堆名词,但面对自己那套「域名 + CDN + Nginx + Next.js + Postgres + 一堆 npm 包」的真实系统,仍然不知道该从哪儿下手。
这个专栏换个组织方式:按请求经过的层来走。
因为攻击者就是这么找路的。他不会先想「我要打 XSS」,他会先看你的域名解析到哪、CDN 后面的源站 IP 露没露、Nginx 版本号在不在响应头里、有没有哪个子域名指向一个已经废弃的 S3 桶。哪一层最松,他就从哪一层进。
本专栏面向的是防守方。 每一篇的结构是固定的:先讲这个位置为什么会出问题(原理),再给一个真实可复现的攻击场景(知道长什么样才认得出来),最后是可以直接抄走的配置与验证命令(改完怎么确认真的生效)。
所有攻击示例都以「打你自己的系统、验证自己的防线」为目的。请只在你有权限测试的系统上执行。
一条链,七个环节
| 层 | 典型问题 | 一句话概括 |
|---|---|---|
| 域名与 DNS | 注册商账号被撞、子域名接管、证书错发 | 打到这一层,后面所有防御全部作废 |
| 边缘(CDN / ALB) | 源站 IP 裸奔、限流缺失、WAF 形同虚设 | 挡得住的和挡不住的,要分清楚 |
| Nginx | 一个少写的斜杠导致路径穿越、请求走私 | 配置文件里的坑比软件漏洞更常见 |
| 前端 | XSS、CSRF、第三方脚本失控 | 代码跑在攻击者的机器上,任何前端校验都只是体验 |
| 后端 | 注入、越权、SSRF、文件上传 | 越权(IDOR)是实战中命中率最高的一类 |
| 组件依赖 | 已知 CVE、供应链投毒 | 你的代码只占产物的很小一部分 |
| 架构与运维 | 权限过大、无日志、无预案 | 前六层都会被突破,这一层决定损失多大 |
三条贯穿全书的原则
一、纵深防御:任何单点都会失守。 不要问「这道防线够不够」,要问「这道破了还剩什么」。CSP 挡不住所有 XSS,但它能把一个「盗取 Cookie」降级成「什么也偷不走」。
二、默认拒绝优于逐个封堵。 黑名单永远漏。「只允许这几个字符」比「禁止这几个字符」强一个量级——注入那一章会用具体例子说明为什么。
三、改完必须验证。 本专栏每一篇都给验证命令。「我加了那个响应头」和「那个响应头确实出现在线上响应里」是两件事,中间隔着 CDN 缓存、反代覆盖、配置未 reload 等一堆现实。
这个专栏怎么走
第 0 部分 · 先建立框架 —— 威胁建模(你在防谁)、一次请求的完整旅程(攻击面在哪)。
第 1 部分 · 域名与 DNS —— 注册商账号、DNS 加固(DNSSEC / CAA)、子域名接管、证书与 CT 日志监控。
第 2 部分 · 边缘 —— 源站暴露(CDN 最常见的失效方式)、DDoS 与限流、WAF 的能力边界。
第 3 部分 · Nginx —— 加固基线、配置陷阱(alias 路径穿越等)、HTTP 请求走私。
第 4 部分 · 前端 —— XSS 三种形态、CSP 落地路径、CSRF 与 SameSite、安全响应头、第三方脚本与 SRI。
第 5 部分 · 后端 —— 注入、认证、授权、SSRF、文件上传、密钥管理。
第 6 部分 · 组件与依赖 —— 依赖审计与可达性分析、容器与镜像安全。
第 7 部分 · 架构与运维 —— 纵深防御与最小权限、日志与检测、应急响应。
收尾 —— 一份可以逐条打勾的上线安全检查清单。
读之前
不需要任何安全背景,但你最好手上真有一个网站——哪怕是个人博客。本专栏的验证命令都是拿来对着真实站点跑的,光看不练收获会少一大半。
涉及协议细节时会引用本站的 《HTTP/1.1 详解》 与 《HTTP/2 与 HTTP/3》,Nginx 配置部分与 《Nginx 详解》 互补——那个专栏讲怎么用,这里讲怎么别用错。
从头开始:威胁建模:你到底在防谁。