← 返回博客
研究 2025年2月24日 25分钟阅读

OWASP Top 10 2025:Web 应用安全风险完整指南

OWASP Top 10 是最广为人知的 Web 应用安全风险标准。无论您是开发者、安全工程师还是企业领导者 — 本指南通过真实案例、检测技术和修复策略详解每个类别。

ℹ️ 什么是 OWASP Top 10?

定期更新的意识文档,对 Web 应用程序最关键的安全风险进行排名。基于数百个组织的数据分析、社区调查和真实漏洞数据。被 PCI DSS、DORA、NIS2 以及许多行业标准所引用。


A01 失效的访问控制

#1 最常见的漏洞 — 在 94% 的测试应用中发现。

⚠️ 真实案例

  • IDOR(不安全的直接对象引用):/api/users/123/profile 改为 /api/users/124/profile
  • 权限提升:普通用户访问 /admin/dashboard
  • 缺失功能级访问控制:API 检查身份验证但不检查授权
  • CORS 错误配置:允许恶意站点发出经过身份验证的请求

✅ 修复措施

  • 在服务器端实施访问控制 — 永远不要依赖客户端
  • 默认拒绝 — 需要明确授权
  • 实施适当的 RBAC 或 ABAC
  • 记录并警告访问控制失败
  • API 访问限流

A02 加密机制失效

以前称为"敏感数据暴露" — 重命名以聚焦根本原因。

⚠️ 常见错误

  • 登录页面通过纯 HTTP 传输凭证
  • 支持 TLS 1.0/1.1 或弱密码套件
  • 使用 MD5 或 SHA-1 而不是 bcrypt/Argon2 存储密码
  • 在源代码中硬编码加密密钥
  • 数据库备份没有加密

✅ 修复措施

使用 HSTS 在所有地方强制 HTTPS。使用 AES-256、bcrypt/Argon2、SHA-256+。永远不要硬编码密钥 — 使用 Vault 或 AWS Secrets Manager。加密静态数据。禁用 TLS 1.0/1.1。

A03 注入

经典的 Web 漏洞 — 二十年后仍在前三名。

注入类型

  • SQL 注入:' OR 1=1 -- 以及更复杂的攻击
  • NoSQL 注入:MongoDB/CouchDB 的 JSON 操纵
  • 命令注入:通过应用输入注入操作系统命令
  • XSS(跨站脚本):注入 JavaScript — 反射型、存储型、DOM 型
  • 模板注入(SSTI):将代码注入服务器端模板引擎
  • 头部注入:操纵 HTTP 头

✅ 预防措施

所有数据库交互使用参数化查询。使用白名单进行输入验证。针对上下文进行输出编码。内容安全策略头。最小权限数据库账户。一致使用 ORM。

A04 不安全的设计

新类别 — 设计级缺陷,而不是实现错误。

⚠️ 示例

  • 密码重置流程允许无限次尝试(无速率限制)
  • 在客户端执行业务规则(JS 中的价格验证)
  • 单个 API 密钥授予对所有资源的读写访问权限

修复:在设计阶段整合威胁建模(STRIDE、PASTA)。使用安全设计模式。与用例一起编写滥用案例。

A05 安全配置错误

在 90% 的测试应用中发现。

⚠️ 常见错误配置

  • 数据库和管理面板上的默认管理员密码
  • 启用目录列表、调试端点、详细错误消息
  • 缺少安全头(CSP、X-Frame-Options、X-Content-Type-Options)
  • 公开可访问的 S3 存储桶或 Azure blob
  • 启用不必要的 HTTP 方法(PUT、DELETE、TRACE)

✅ 预防措施

可重复的加固流程。删除所有不必要的功能。实施所有安全头。使用 IaC 自动化配置管理。定期配置审计。使用 CSPM 管理云配置。

A06 易受攻击和过时的组件

528
平均组件/应用
84%
含已知漏洞的代码库
48%
高风险漏洞
252天
平均修复时间

⚠️ 著名案例

  • Log4Shell(CVE-2021-44228):影响数百万 Java 应用的严重 RCE
  • Spring4Shell(CVE-2022-22965):Spring Framework 中的 RCE
  • jQuery XSS:许多应用仍在使用易受攻击的 jQuery 版本

修复:维护组件清单(SBOM)。持续监控 CVE 数据库。删除未使用的依赖项。使用 Dependabot/Renovate 自动化更新。

A07 身份识别和身份验证失效

⚠️ 常见失效

  • 凭证填充:使用窃取的密码进行自动化攻击
  • 弱密码策略(允许"password123")
  • 会话固定和缺少会话失效
  • 会话令牌在 URL 中暴露
  • 关键功能缺少 MFA

✅ 预防措施

实施 MFA。通过漏洞数据库检查来强制执行强密码。在身份验证端点上进行速率限制。安全的会话管理(随机 ID、HTTPOnly/Secure 标志)。在注销/密码更改时使会话失效。

A08 软件和数据完整性失效

⚠️ 真实攻击

  • SolarWinds(2020):合法软件更新中的恶意代码 — 影响 18,000 个组织
  • 不安全的反序列化:通过不受信任的数据执行任意代码
  • CI/CD 管道入侵:Codecov、ua-parser-js 事件
  • 缺少 SRI:从 CDN 加载 JS 而没有完整性哈希

修复:对所有软件/数据进行数字签名。对外部资源使用子资源完整性(SRI)。使用访问控制和签名保护 CI/CD。避免不安全的反序列化 — 使用 JSON。

A09 安全日志和监控失效

ℹ️ 盲目的代价

识别漏洞的平均时间:204 天(IBM 2024)。如果没有足够的日志记录,攻击者可以建立持久性、窃取数据并扩大攻击范围 — 所有这些都不会触发警报。

修复:记录所有身份验证事件、访问控制失败和输入验证失败。包含上下文(时间戳、用户、IP、操作)。在防篡改 SIEM 中集中日志。实施自动警报。定期测试检测能力。

A10 服务器端请求伪造(SSRF)

新类别 — 由于在云原生架构中的普遍性增加而添加。

⚠️ SSRF 为何危险

  • Capital One 漏洞(2019):SSRF → AWS 元数据 → 暴露 1 亿+ 客户记录
  • 云元数据盗窃:访问 http://169.254.169.254/ 获取 IAM 凭证
  • 内部服务访问:访问防火墙后的 API、数据库、管理面板

✅ 预防措施

在服务器端验证所有用户提供的 URL。使用允许域的白名单。阻止私有 IP 范围(10.x、172.16.x、169.254.x、127.x)。禁用不必要的 URL 方案(file://、gopher://)。在 AWS 上使用 IMDSv2。隔离 URL 获取服务。


KENSAI 如何扫描 OWASP Top 10

OWASP 类别KENSAI 覆盖范围
A01 失效的访问控制IDOR 测试、授权绕过、CORS 检查
A02 加密机制失效TLS 分析、头部检查、加密验证
A03 注入SQL、XSS、命令注入、SSTI、头部注入
A04 不安全的设计速率限制、可预测资源、逻辑测试
A05 安全配置错误头部、默认值、信息泄露、HTTP 方法
A06 易受攻击的组件技术指纹识别、332K+ CVE 数据库
A07 身份验证失效默认凭证、会话测试、cookie 分析
A08 完整性失效SRI 检查、反序列化测试
A09 日志失效安全头分析、错误处理审查
A10 SSRF内部端点注入、云元数据测试
332K+
跟踪的 CVE
10/10
OWASP 覆盖率
AI
驱动的准确性
€990
起始价格/月

针对 OWASP Top 10 测试您的应用

免费扫描 — 无需承诺,无需信用卡。AI 驱动的 DAST,具有符合合规要求的报告。

开始免费扫描 →

常见问题

最常见的 OWASP 漏洞是什么?

失效的访问控制(A01) — 在 94% 的测试应用中发现。它从第 5 位上升到第 1 位,反映了在强制执行授权方面的广泛失败,特别是在 API 和 SPA 中。

OWASP Top 10 合规性是强制性的吗?

OWASP Top 10 本身是自愿的。但是,它被 PCI DSS(要求解决 OWASP Top 10)、NIS2(期望系统的漏洞管理)、DORA(引用行业标准测试)以及许多供应商评估所引用。实际上,它实际上是强制性的。

自动化工具可以检测所有 OWASP Top 10 吗?

自动化 DAST 工具有效地检测大多数类别 — 特别是注入(A03)、加密失效(A02)、错误配置(A05)和易受攻击的组件(A06)。像不安全的设计(A04)和日志失效(A09)这样的某些类别通常需要人工评估。使用自动化扫描广度 + 人工测试深度。

OWASP Top 10 多久更新一次?

每 3-4 年。主要版本:2013、2017、2021。每次更新都反映了威胁格局的变化 — 2021 年的更新引入了不安全的设计(A04)和 SSRF(A10),同时重组了其他类别。

安全不是可选项。

🗡️ KENSAI 团队

🛡️ Protect Your Business

Get a free security scan of your website in 60 seconds

Free Security Scan →
📚 More Articles 🏠 Home