引言
OWASP Top 10 是全球 Web 安全领域最具权威性的风险清单之一。2021 年发布的版本相较于 2017 年发生了显著变化,不仅重新排列了风险优先级,还新增了多个与现代应用架构密切相关的类别。本文将逐一剖析 OWASP Top 10 2021 中的十大安全风险,重点聚焦排名第一的“失效的访问控制”以及新晋入选的“服务端请求伪造(SSRF)”,帮助开发者和安全从业者深入理解这些威胁的本质与防御策略。

A01:失效的访问控制(Broken Access Control)
失效的访问控制从 2017 年的第五位跃升至 2021 年的第一位,成为最严重的安全风险。其核心问题在于:应用程序未能正确验证用户是否有权执行特定操作或访问特定资源。
常见场景包括:
- 水平越权:用户 A 可以查看或修改用户 B 的数据,例如通过修改 URL 中的用户 ID 访问他人订单。
- 垂直越权:普通用户能够执行管理员操作,例如直接访问
/admin路径而未被拦截。 - CORS 配置错误:允许任意来源的跨域请求,导致敏感数据泄露。
- 目录遍历:通过
../等路径穿越手段访问未授权文件。
防御建议:采用“默认拒绝”原则,在服务端对每一次请求进行权限校验;使用基于角色的访问控制(RBAC)或基于属性的访问控制(ABAC);避免仅依赖前端隐藏菜单或按钮来实现权限控制。
A02:加密机制失效(Cryptographic Failures)
该类别取代了此前的“敏感数据暴露”,更加强调加密层面的根本性缺陷。典型问题包括:
- 使用已被破解的算法(如 MD5、SHA-1)存储密码;
- 传输层未启用 TLS 或配置不当;
- 密钥硬编码在代码仓库中;
- 使用 ECB 模式进行块加密,导致模式泄露。
防御建议:对敏感数据实施强加密(如 AES-256-GCM);密码存储使用 bcrypt、scrypt 或 Argon2;全站启用 HTTPS 并配置 HSTS;密钥通过专用密钥管理服务(KMS)管理。
A03:注入(Injection)
注入漏洞依然稳居前三,包括 SQL 注入、NoSQL 注入、命令注入、LDAP 注入等。尽管这一风险已被广泛认知,但因遗留代码和框架误用,注入问题仍然普遍存在。
防御建议:使用参数化查询或预编译语句;对用户输入进行严格的类型校验和白名单过滤;避免将用户输入直接拼接至命令或查询中;使用 ORM 框架时注意其底层实现是否安全。
A04:不安全设计(Insecure Design)
这是 2021 年新增的类别,强调安全左移——在软件设计阶段就应考虑安全威胁。不安全设计不同于实现缺陷,它指的是架构层面缺乏安全控制,例如:
- 未设计账户锁定机制,导致暴力破解可行;
- 密码找回流程仅依赖安全问题,容易被社工攻击;
- 未对业务逻辑进行滥用场景分析。
防御建议:采用威胁建模方法(如 STRIDE);编写安全设计文档;对关键业务流程进行滥用案例评审;引入安全设计模式库。
A05:安全配置错误(Security Misconfiguration)
该风险涵盖范围极广,包括:
- 默认账户和密码未修改;
- 错误页面泄露堆栈信息;
- 云存储桶权限开放;
- 不必要的功能或端口未关闭;
- 安全响应头缺失。
防御建议:建立自动化配置基线;使用基础设施即代码(IaC)并进行安全扫描;定期审计云环境权限;关闭生产环境中的调试模式。
A06:易受攻击和过时的组件(Vulnerable and Outdated Components)
现代应用大量依赖第三方库和框架,一旦这些组件存在已知漏洞(CVE),整个应用即面临风险。Log4Shell 事件便是典型案例。
防御建议:使用软件物料清单(SBOM)追踪依赖;集成 SCA 工具(如 OWASP Dependency-Check、Snyk)持续扫描;建立组件升级和补丁管理流程。
A07:身份识别和认证失败(Identification and Authentication Failures)
该类别关注认证机制本身的弱点,例如:
- 允许弱密码或常见密码;
- 无多因素认证(MFA);
- 会话 ID 暴露在 URL 中;
- 会话固定攻击。
防御建议:强制实施 MFA;使用强密码策略并检查泄露密码库;会话令牌应具备足够的熵并在登出后失效;限制登录尝试次数。
A08:软件和数据完整性失败(Software and Data Integrity Failures)
新增类别,聚焦于不信任的 CI/CD 流水线、自动更新机制和反序列化漏洞。例如,攻击者入侵 npm 包并植入恶意代码,或利用不安全的反序列化执行远程代码。
防御建议:对软件发布进行数字签名;使用可信源获取依赖;避免对不可信数据执行反序列化;保护 CI/CD 管道安全。
A09:安全日志和监控失败(Security Logging and Monitoring Failures)
缺乏有效的日志记录和实时监控,导致入侵行为无法被及时发现。常见问题包括:日志未记录关键事件、日志未集中管理、告警阈值不合理。
防御建议:记录认证、访问控制、输入验证等关键事件;使用 SIEM 平台集中分析;建立告警和响应流程;确保日志本身不被篡改。
A10:服务端请求伪造(SSRF)
SSRF 是 2021 年新加入的类别,尽管在 2017 年它曾被归入“未验证的重定向和转发”。SSRF 发生在应用从用户可控的 URL 获取远程资源时,攻击者可借此探测内网、访问云元数据接口(如 169.254.169.254)或执行内部服务攻击。
典型场景:
- 图片加载功能允许用户输入 URL;
- Webhook 配置未限制目标地址;
- 文件导入功能从远程 URL 拉取内容。
防御建议:
- 对用户提供的 URL 实施白名单校验;
- 禁用不必要的 URL 协议(如
file://、gopher://); - 使用网络层隔离,限制服务器出站流量;
- 对云环境启用 IMDSv2 并限制元数据访问;
- 避免将原始响应返回给用户。
总结
OWASP Top 10 2021 反映了现代 Web 应用面临的核心安全挑战。从排名第一的失效访问控制到新晋的 SSRF,每一项风险都对应着真实世界中的攻击案例。安全不是一次性的工作,而是贯穿需求、设计、开发、测试和运维全生命周期的持续过程。开发者应将这十项风险作为基线,结合威胁建模、安全编码规范和自动化工具,构建纵深防御体系,从而有效降低被攻击的概率与影响。
未经允许不得转载:任鹏个人博客 » 深入剖析 OWASP Top 10 2021:从失效的访问控制到服务端请求伪造

