什么是OWASP Top 10

OWASP(开放Web应用安全项目)每3-4年发布一次Web应用最严重的安全风险排名。OWASP Top 10是Web安全领域最权威的指南,也是开发者安全入门的第一课。

OWASP Top 10 2021

A01:访问控制失效

未对用户访问权限进行适当限制,导致用户可以访问未授权的功能或数据。

常见场景: - 通过修改URL中的ID访问其他用户的数据 - 越权访问管理员功能 - JWT Token未验证

防御: 实施最小权限原则,每个请求都验证访问权限。

A02:加密机制失效

敏感数据未加密或加密方式不正确。

常见场景: - 密码明文存储 - 未使用HTTPS - 使用弱加密算法(MD5、SHA-1)

防御: 传输层使用TLS,存储层使用强加密算法(AES-256),密码使用bcrypt/argon2。

A03:注入

将不可信数据作为代码或查询的一部分执行。

常见场景: - SQL注入 - NoSQL注入 - OS命令注入 - LDAP注入

防御: 使用参数化查询、ORM安全方法、输入验证。

A04:不安全设计

架构层面的安全缺陷。

防御: 在系统设计阶段进行威胁建模,使用安全设计模式。

A05:安全配置错误

默认配置、不完整的配置、开放云存储等。

防御: 移除默认账号,禁用不必要的功能,定期审计配置。

A06:易受攻击和过时的组件

使用了有已知漏洞的第三方库或框架。

防御: 定期更新依赖,使用SBOM(软件物料清单)管理组件。

A07:认证和身份验证失效

认证机制存在漏洞,如弱密码策略、会话管理不当。

防御: 实施多因素认证,使用安全的密码策略,防暴力破解。

A08:软件和数据完整性失效

CI/CD流水线、自动更新等环节被篡改。

防御: 签名验证,使用可信的依赖源。

A09:安全日志和监控不足

缺乏足够的事件记录和告警机制。

防御: 集中日志管理,设置异常行为告警。

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

服务器端发起请求时,用户控制了目标地址。

防御: 白名单允许的目标地址,禁止访问内网IP。

安全开发的SDLC

将安全融入软件开发生命周期的每个阶段:

  1. 需求阶段:安全需求分析
  2. 设计阶段:威胁建模
  3. 开发阶段:安全编码规范
  4. 测试阶段:SAST/DAST扫描
  5. 部署阶段:安全配置检查
  6. 运维阶段:持续监控

学习资源

  • OWASP官方指南和Cheat Sheet Series
  • PortSwigger Web Security Academy(免费实战训练)
  • HackerOne披露的漏洞报告

Web安全不是可选项,而是每个开发者的必修课。理解OWASP Top 10是安全之旅的第一步。