网站安全一本通

沿着一次 HTTP 请求的完整旅程,逐层拆解网站安全——域名与 DNS、CDN 与负载均衡、Nginx、前端、后端、依赖组件、架构与运维,每一层讲清真实的攻击手法、可复制的配置与能立刻上手的验证命令。

作者 David更新于

序 · 安全不是一个功能,是一条链

大多数「网站安全」的资料有个共同毛病:它们是按漏洞名称组织的。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 详解》 互补——那个专栏讲怎么用,这里讲怎么别用错。

从头开始:威胁建模:你到底在防谁。

本页目录