OWASP Top 10 实战通关指南:总览篇 📅 2026/8/5 18:49:00 文章目录先把“通关”定义清楚十条分别在说什么用人话A01 失效的访问控制Broken Access ControlA02 加密机制失败Cryptographic FailuresA03 注入InjectionA04 不安全设计Insecure DesignA05 安全配置错误Security MisconfigurationA06 易受攻击和过时的组件Vulnerable and Outdated ComponentsA07 标识和认证失败Identification and Authentication FailuresA08 软件和数据完整性失败Software and Data Integrity FailuresA09 安全日志和监控失败Security Logging and Monitoring FailuresA10 服务端请求伪造 SSRFServer-Side Request Forgery一张图串起来方便记实战通关我建议的打法总览级第一步先画资产和数据不先开扫第二步两周突击“权限 认证 注入”第三步配置与组件并行第四步补设计和 SSRF第五步日志与完整性托底每条风险的“通关验收”长什么样测试方法不必上玄学但要上对抗思维1. 手工探权限非常值钱2. 自动化扫描当辅助3. 代码评审看“边界”4. 预发做一次“坏用户”演练工程上真正防住 Top 10 的往往是这些“无聊物”组织怎么推才不像安全部门自嗨说起来有点尴尬。很多团队一提安全第一反应就是“我们对照过 OWASP Top 10”。再追问一句对照完呢改了哪些接口回归测了没日志里能不能看见越权现场常常就沉默了。Top 10 不是考纲更不是贴在墙上就灵的护身符。它更像一张事故高频地图过去这些年真实业务里反复砸钱、反复丢人、反复被通报的那几类问题被社区收成了十条。你按图排查效率会高很多但如果你只背定义、不碰系统通关永远停在口嗨。先把“通关”定义清楚我见过三种“假通关”第一种安全问卷全打勾生产上 Swagger 还裸着。第二种扫出八百个低危Critical 挂着没人认领。第三种开发说“框架已经防了 SQL 注入”然后拼接语句写在报表接口里。在本指南里通关更实际的意思是对每一类风险你能指出它在你们系统里长什么样有可重复的测试方法有默认防住它的工程手段出了事能在日志里追到人、追到请求。分数不重要。能不能睡个安稳觉才重要。十条分别在说什么用人话A01 失效的访问控制Broken Access Control连续两版蝉联榜首不是因为它高深恰恰因为它土用户只能看自己的订单却改个id10086就看见别人的普通账号调用了管理端接口本该服务端裁决的权限前端藏了个按钮就当“禁了”。实战里这类问题杀伤力极大因为往往不需要什么花活有登录态就行。越权、水平权限、垂直权限、未失效的 IDOR都归这类。通关感言权限必须是服务端强制的每个对象访问都要问“这个主体凭什么动这份数据”。A02 加密机制失败Cryptographic Failures以前叫敏感数据暴露现在更强调你怎么用密码学——或更糟你怎么以为自己在用。明文存密码、硬编码密钥、TLS 配成摆设、用自制“加密算法”、银行卡和身份证随便落日志都属于这一家。很多事故不是密码学论文级突破是钥匙挂在门框上。A03 注入InjectionSQL、LDAP、OS 命令、模板注入……本质都是不可信输入进了解释器还被当成指令的一部分。SQL 注入名气最大但命令注入在运维接口、导出功能、图片处理里一点都不稀罕。框架和预编译能挡住一大片挡不住工程师图省事又把字符串拼回去。A04 不安全设计Insecure Design2021 新进榜也是最容易被误解的一条。它不是说“代码写丑了”而是说威胁建模根本没做业务流程天然可被滥用——比如无限试券、短信轰炸、邀请奖励刷爆、工作流可绕过审批。你把代码写得再干净设计上允许羊毛党安全后期只能贴膏药。A05 安全配置错误Security Misconfiguration默认口令、目录列表、多余端口、错误的云存储桶权限、生产开 Debug、管理端对公网、HTTP 头乱套……这类问题像办公室未锁的抽屉单个看不高级组合起来能要命。云上尤其严重一键创建很爽默认策略很宽。A06 易受攻击和过时的组件Vulnerable and Outdated ComponentsLog4Shell 让这条彻底破圈。你不写漏洞依赖会替你写。更麻烦的是很多团队说不清线上到底跑了哪些包、哪些传递依赖。通关不靠“我们打算升级”靠 SBOM、扫描进流水线、以及前面写过的修复 SLA。A07 标识和认证失败Identification and Authentication Failures弱口令、凭证塞进 URL、会话固定、验证码可绕、密码重置逻辑脑残、“记住我”变成永久通行证。认证是大门门虚掩着后面权限设计再漂亮也是摆设。多因素认证很有用但若重置流程只靠短信验证码且可被轰炸枚举照样崩。A08 软件和数据完整性失败Software and Data Integrity Failures供应链那篇文章里的味道不安全的 CI、不可信的插件、自动更新未校验、反序列化不可信数据、发布物没有签名验证。SolarWinds 是极端案例日常更多是“构建机谁都能推”、“前端CDN资源没做完整性校验”。A09 安全日志和监控失败Security Logging and Monitoring Failures这条最冷也最贵。出事了才发现登录失败没记、管理操作没记、告警没人看、时钟不同步、日志可被攻击者顺便清空。没有日志的安全像没有行车记录仪的车险——理赔故事靠编。A10 服务端请求伪造 SSRFServer-Side Request Forgery应用替攻击者去请求内网地址打云元数据、打企业Redis、打管理端口。功能上看只是“帮用户拉个远程图片/文档预览”设计上却把服务器变成了内网代理。云环境里SSRF 经常是大案的第一脚。一张图串起来方便记你可以把十条想成进门到善后的链设计是否防滥用 ─────────────── A04 门禁认证是否靠谱 ───────── A07 进门后能不能乱翻别人柜子 ─── A01 输入会不会变成命令 ───────── A03 出站会不会变内网代理 ─────── A10 数据与密钥是否乱放 ───────── A02 机器与框架是否裸奔 ───────── A05 依赖是否在裸奔 ───────────── A06 更新与构建是否被掉包 ─────── A08 出事能不能看见、能不能响 ─── A09真实入侵往往连着打好几环认证弱 → 越权 → 翻配置 → 吃漏洞组件 → 没人从日志里发现。实战通关我建议的打法总览级别妄想两周“做完 Top 10”。按杠杆排序反而快。第一步先画资产和数据不先开扫问清楚对外有哪些域名与 API哪几类数据最值钱账号体系、支付、身份证、密钥管理端在哪、谁能访问关键依赖谁维护。没有这张图扫描报告只是噪音工厂。第二步两周突击“权限 认证 注入”这三样出大事的概率最高修复路径也相对清楚所有对象接口做服务端鉴权测试换用户、换角色、换资源 ID登录、重置、验证码、会话生命周期走查有 SQL/命令/模板的地方查有没有拼接补集成测试。很多中小型团队只做完这三步风险曲线就会明显下降。第三步配置与组件并行配置问题适合清单化云存储桶、安全组、默认账户、错误页、HTTP 头、管理端口。组件问题适合工程化仓库扫描、镜像扫描、升级 SLA参见补丁管理那篇。第四步补设计和 SSRF对“发券、邀请、短信、文件预览、Webhook、导入 URL”做威胁建模。凡是服务器帮用户发起请求的地方默认按 SSRF 高危看协议限制、域名白名单、禁内网网段、禁云元数据地址。第五步日志与完整性托底没有前几步日志是空转有了前几步没日志被打了还不知道。最低标准认证失败/成功、权限拒绝、管理操作、关键配置变更——要进集中日志且有人看高危告警。每条风险的“通关验收”长什么样下面这张表不求学术完美求评审时能问出口。类别你可以问团队的验收问题A01换一个普通用户 token改资源 ID是否 403自动化测了几条A02密码怎么存密钥从哪来日志里是否出现过完整证件号A03新报表接口是否还有字符串拼 SQL有无安全测试用例A04刷接口、刷奖励的限速与风控在哪一层A05生产是否还能看到调试栈对象存储是否公共读A06生产 SBOM 有没有Log4j 那类库升级 SLA 是多少天A07重置密码是否可枚举用户会话是否可在注销后继续用A08CI 产物是否签名/哈希校验构建机谁能登录A09昨天有没有失败登录峰值告警谁收的A10文件预览是否能打到169.254.169.254问得出来、答得出来、还能演示——才叫通关不叫背诵。测试方法不必上玄学但要上对抗思维1. 手工探权限非常值钱准备两个账号A、B必要时再加一个管理员。登录 A抓取访问自己资源的请求把 token 换成 B或把 ID 换成 B 的资源。管理接口用普通 token 砸一次。这套动作能挖出一半以上“其实很好修”的高危。2. 自动化扫描当辅助DAST/SAST/依赖扫描都要但别迷信。扫描器擅长已知模式不擅长你们奇葩业务流。扫完必须分派、必须有结案标准否则就是 PDF 垃圾场。3. 代码评审看“边界”评审时别只盯风格。盯新接口有没有鉴权注解/中间件、有没有拼 SQL、有没有吃 URL 去服务端请求、有没有新序列化入口。4. 预发做一次“坏用户”演练找个懂业务的测试专门扮演羊毛党/恶意商户。比安全部自己瞎点更接近真实。工程上真正防住 Top 10 的往往是这些“无聊物”说句扫兴的通关靠的多半不是酷炫 WAF 规则而是——统一的鉴权中间件 / 策略点ABAC/RBAC 落地参数化查询与命令参数数组禁止拼接密钥托管与强制 HTTPS安全基线镜像与云配置策略即代码依赖升级流水线与例外封顶登录与权限拒绝日志 告警SSRF 防护库或统一出站网关。WAF、RASP、商业扫描器有价值但它们是补丁层。Top 10 的根治在设计和框架默认值。组织怎么推才不像安全部门自嗨我踩过的坑安全自己建了个 Jira 看板开发从来不看。比较行得通的做法是把 Top 10 映射到现有质量门禁而不是另起一套黑话。例如PR 模板增加“是否涉及鉴权/对外请求/新依赖”。每个核心系统认领一个安全联络人不一定全职但要能扛修复优先级。只强制门禁 Critical/High先把伤口止住低危别淹没信任。用事故复盘反推条目每出一次越权就补一条自动化回归让 A01 的墙变厚。管理层爱听 Top 10开发爱听“少返工”。把二者翻译成门禁和模板比再开一次宣讲有用。