系列总览:OWASP Top 10 是什么、怎么读这套系列
开始读这个系列之前,先把几个背景问题说清楚——尤其是被问得最多的一个:为什么每项漏洞的编号里都带着"2021"?是不是内容过时了?
先给结论:没过时。"2021"是榜单的版本年份,不是漏洞的发现年份。 就像法规会修订、手册会改版,OWASP Top 10 也是按"版"发布的——2017 年发过一版,2021 年发了现行版。到目前为止,业界生产环境的安全基线依然普遍以 2021 版为准。
OWASP 和它的 Top 10
OWASP(Open Worldwide Application Security Project,开放全球应用安全项目)是一个专注 Web 应用安全的国际非营利组织,从 2003 年起定期发布《OWASP Top 10》。它做的事用一句话概括:汇总全球范围内真实发生、真实造成危害的 Web 安全问题,按贡献数据和行业共识排出前十名,给开发者和安全团队当工作清单用。
几个常见误解,顺手澄清:
- Top 10 不是法律或强制标准。 但它是最广为引用的行业基线,等保测评、ISO 27001 审计里也常拿它当检查参考。
- 它排的是"问题类别",不是具体的 CVE。 比如 A03 注入是一大类问题,SQL 注入、命令注入、模板注入、表达式注入都算在内;具体的 CVE 编号是另一个体系。
- 排名变化反映的是行业现状,不是"哪个漏洞变强了"。 比如 2021 版 A01 登顶,很大程度是因为自动化测试工具普及之后,越权类问题的检出率和真实发生率都上来了——不是攻击者突然更聪明了。
编号怎么读:A01:2021 是什么意思
官方编号格式是 类别序号:版本年份:
| 写法 | 含义 |
|---|---|
| A01 | 2021 版榜单的第 1 项 |
| A01:2021 | 完整官方写法,指"2021 版榜单的 A01" |
| CVE-2021-44228 | 这是另一个体系(CVE 漏洞编号),和 Top 10 编号是两码事 |
所以本系列每篇文章的开头都有一行"本文对应 2021 版榜单 A0X"的说明——它标注的是这篇在榜单里的位置,而不是说这篇内容写于 2021 年。文章标题里我们刻意不带编号前缀,读起来更像人话;定位信息统一放在开头的说明行里。
顺带一提:OWASP 已经在推进新版榜单(2025 年底发布了新版征求意见稿),等正式定稿、业界开始普及后,这个系列会跟进做版本对照。
2021 版相对 2017 版的三个大变化
如果你看过 2017 版,过渡到 2021 版有三个变化值得注意:
| 变化 | 具体内容 | 对实践的影响 |
|---|---|---|
| 三项全新入榜 | A04 不安全的设计、A08 软件与数据完整性失败、A10 SSRF | 安全工作从"写代码时防"前移到"设计时防"(A04),并开始正视供应链和云环境(A08/A10) |
| A01 登顶 | 失效的访问控制从第 5 升到第 1 | 越权成为第一大问题,鉴权要从"逐接口手写"转向"架构级默认拒绝" |
| XSS 并入 A03 | 不再单列,作为注入的一种并入 | 认清本质:XSS 和 SQL 注入是同一种错误——把数据当成了指令 |
另外命名风格也有变化:从 2017 版的"Injection / Sensitive Data Exposure"这类名词,转向 2021 版的"Cryptographic Failures / Identification and Authentication Failures"这类描述失效模式的命名——强调的是"哪里没做对",而不是"攻击者用了什么"。
十篇怎么读
| 篇 | 榜单项 | 一句话概括 |
|---|---|---|
| A01 失效的访问控制 | Broken Access Control | 前台门禁管进楼,办公室的门没人锁——越权是怎么发生、怎么挖、怎么根治 |
| A02 加密失败 | Cryptographic Failures | 弱哈希、ECB 模式、硬编码密钥——你的数据可能在"合法地裸奔" |
| A03 注入 | Injection | 从一个单引号到拖走整张表:SQL 注入的完整利用链与预编译防线 |
| A04 不安全的设计 | Insecure Design | 锁是好的,门是纸糊的:业务逻辑漏洞为什么没有扫描器能扫 |
| A05 安全配置错误 | Security Misconfiguration | 默认口令、目录列表、Actuator 未授权——技术含量最低,命中率最高 |
| A06 易受攻击的组件 | Vulnerable and Outdated Components | 你没写错代码,但你引用的东西错了:SBOM、SCA 与依赖治理 |
| A07 身份认证失败 | Identification and Authentication Failures | 门卫只看了你一眼就放行:弱口令、会话缺陷与 JWT 攻击 |
| A08 软件与数据完整性失败 | Software and Data Integrity Failures | 封条完好不代表没被调包:反序列化、供应链投毒与 CI/CD 安全 |
| A09 日志与监控失败 | Security Logging and Monitoring Failures | 被打了 200 天才发现:日志该记什么、告警怎么降噪、日志怎么防删 |
| A10 服务端请求伪造 | Server-Side Request Forgery | 让服务器替你敲门:从内网探测到三个请求拿下一个云账号 |
三条阅读路线
想快速上手挖洞(攻视角):A01 → A03 → A05。这三篇覆盖了实战中命中率最高的三类问题,工具链也最成熟(Burp、sqlmap、Nuclei 都有完整示例),读完就能在授权项目里上手。
负责系统建设(守视角):A05 → A06 → A09 → A01。先摸清暴露面(A05),再管住依赖(A06),把可观测性建起来(A09),最后用"默认拒绝"重构鉴权(A01)。这个顺序的投入产出比最高。
想系统学一遍:按编号顺序读。前十项的排序本身就有逻辑——从访问控制到加密、注入、设计、配置、组件、认证、完整性、可观测性,基本覆盖了一个 Web 系统从外到内的所有攻击面。
⚠️ 声明:本系列所有示例、脚本与命令仅用于授权的安全测试、教学研究与自有系统加固。请勿对任何未授权系统进行测试,违反者需自行承担法律责任。