OWASP Top 10 是关于网络应用安全风险被引用最广泛的清单,由备受尊重的非营利组织 Open Worldwide Application Security Project (OWASP) 发布。它面向安全专业人员,但其所描述的风险会带来直接的业务后果:数据泄露、停机、罚款以及信任流失。本指南用通俗的语言解释每个类别,帮助你就自己的应用提出正确的问题。
随着攻击方式的演变,OWASP 每隔几年会修订一次清单。以下类别反映的是已被广泛确立的 2021 年修订版,它对大多数团队而言仍是标准参考;即使排名有所变化,其背后的风险依然稳定。
要点速览
- OWASP Top 10 是网络应用最严重安全风险的行业标准清单
- 最主要的类别涉及访问控制、薄弱的加密、注入缺陷,以及在早期作出的不安全设计决策
- 这些风险大多可归结为几个根本原因:缺失的检查、错误配置、过时组件以及不足的监控
- 你无需懂技术,也能要求团队或供应商对每一项风险负责
1. 访问控制失效(Broken Access Control)
含义: 用户能够执行或看到本不该被允许的内容,例如通过修改 URL 中的 ID 来查看其他客户的数据,或在并非管理员的情况下访问管理功能。
为何重要: 这一直是最常见、危害最大的风险之一,会直接导致数据暴露和未经授权的操作。
向团队提问: 权限是否针对每个请求都在服务器端强制执行,而不仅仅是隐藏在界面中?
2. 加密机制失效(Cryptographic Failures)
含义: 敏感数据(密码、支付信息、个人信息)未得到妥善保护,例如在传输或存储时未加密,或使用了薄弱或过时的算法进行保护。
为何重要: 敏感数据暴露会引发泄露,并且在 GDPR 之下可能带来罚款和强制披露义务。
向团队提问: 所有流量是否都经由 HTTPS,敏感数据是否在存储时使用现代算法加密?
3. 注入(Injection)
含义: 不可信的输入被当作命令处理,使攻击者能够操纵数据库(SQL injection)或执行非预期的操作。跨站脚本(XSS)也包含在内。
为何重要: 注入可能暴露或摧毁整个数据库,并劫持用户会话。
向团队提问: 我们是否使用参数化查询,并对所有用户输入进行校验和编码?
4. 不安全的设计(Insecure Design)
含义: 安全弱点存在于设计本身,而不仅仅在代码中,例如一个可被滥用的密码重置流程,或一个信任浏览器所传价格的结账流程。
为何重要: 设计缺陷无法在事后通过打补丁消除;它们需要重新构思该功能。安全必须在一开始就纳入考量。
向团队提问: 我们是否在构建重要功能之前进行威胁建模?
5. 安全配置错误(Security Misconfiguration)
含义: 不安全的默认设置、未关闭的多余功能、过于详细的错误信息,或缺失的安全响应头。
为何重要: 配置错误极为常见,且往往很容易被攻击者发现并利用。
向团队提问: 是否已删除默认账户、禁用未使用的功能,并设置好安全响应头?
6. 易受攻击和过时的组件(Vulnerable and Outdated Components)
含义: 应用依赖于存在已知漏洞且未更新的第三方库、框架或插件。
为何重要: 攻击者会大规模扫描已知的易受攻击组件。许多重大泄露都可追溯到某个未打补丁的依赖项。
向团队提问: 我们是否跟踪各项依赖,并在漏洞被披露时及时更新它们?
7. 身份识别与认证失效(Identification and Authentication Failures)
含义: 薄弱的登录系统:糟糕的密码策略、缺乏对暴力破解(brute force)的防护、薄弱的会话管理,或缺失多因素认证。
为何重要: 被攻陷的账户是通往数据和功能的直接通道。
向团队提问: 我们是否提供多因素认证(MFA),并防范撞库(credential stuffing)和暴力破解?
8. 软件和数据完整性失效(Software and Data Integrity Failures)
含义: 信任来自未经验证来源的代码、更新或数据,例如不安全的软件更新机制或被攻陷的构建流水线(供应链风险)。
为何重要: 供应链攻击日益增多,可通过单一受信任的渠道一次性危及众多受害者。
向团队提问: 我们是否验证更新和依赖项的完整性,并保护我们的构建与部署流水线?
9. 安全日志与监控失效(Security Logging and Monitoring Failures)
含义: 不记录与安全相关的事件,或不加以监视,导致攻击在很长时间内不被察觉。
为何重要: 你无法应对看不见的东西。监控不到位正是泄露往往数月未被发现的原因。
向团队提问: 我们是否记录安全事件,并对可疑活动发出告警?
10. 服务器端请求伪造(SSRF)
含义: 攻击者诱使服务器向其本不该访问的系统发出请求,从而可能触及本不应对外公开的内部服务。
为何重要: SSRF 可能暴露内部基础设施和云端元数据,并曾出现在多起重大泄露中。
向团队提问: 我们是否校验并限制服务器被允许调用的目标地址?
关键要点
- OWASP Top 10 是网络应用安全风险的标准参考;大多数条目都可归结为缺失的检查、错误配置、过时组件和薄弱的监控。
- 访问控制、加密、注入和不安全的设计是影响最大的类别。
- 你无需懂技术,也能要求团队或供应商对每一项风险负责;上述问题是一个良好的起点。
- 了解自身现状最可靠的方式是进行独立测试。
依据 OWASP Top 10 测试你的网站
上述问题开启了对话;专业的测试才能给出答案。应用安全测试 结合了静态代码分析、动态运行时测试、依赖与供应链审计,以及认证和加密审查,在你的真实应用中发现这些风险,并提供按风险分级的结果与修复指导。若想更全面地了解如何保护一个正在运行的网站,请参阅面向英国企业的网站安全审计指南 。
常见问题(FAQ)
OWASP Top 10 是什么? 它是一份定期更新的清单,列出十项最严重的网络应用安全风险,由 Open Worldwide Application Security Project (OWASP) 发布。它是为应用安全工作确定优先级的行业标准参考。
OWASP Top 10 是一套完整的安全标准吗? 不是。它是一份涵盖最严重风险的意识提升与优先级排序文档,而非详尽无遗的检查清单。请将其作为起点,并配合更深入的测试和安全开发实践。
OWASP Top 10 多久更新一次? 随着数据和攻击方式的变化,OWASP 每隔几年会修订一次。类别会演进并重新排序,但背后的风险大体保持稳定,因此在两次修订之间相关概念依然适用。
哪一项 OWASP 风险最危险? 这因应用而异,但访问控制失效和注入在历史上一直属于最常见、危害最大的风险之列。对你而言正确的优先级,取决于你的具体应用是如何构建和暴露的。
我如何知道自己的应用是否受影响? 唯一可靠的方式是测试:针对你真实的代码库和正在运行的应用进行静态分析、动态测试和依赖审计。一次专业的应用安全测试会将你的风险映射到这些类别,并给出按优先级排序的修复方案。
评论