Skip to content

系列总览: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 是什么意思

官方编号格式是 类别序号:版本年份

写法含义
A012021 版榜单的第 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 系统从外到内的所有攻击面。


⚠️ 声明:本系列所有示例、脚本与命令仅用于授权的安全测试、教学研究与自有系统加固。请勿对任何未授权系统进行测试,违反者需自行承担法律责任。

SecLab 网络安全博客 · 内容仅供安全研究与学习,请勿用于未授权活动