什么是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
将安全融入软件开发生命周期的每个阶段:
- 需求阶段:安全需求分析
- 设计阶段:威胁建模
- 开发阶段:安全编码规范
- 测试阶段:SAST/DAST扫描
- 部署阶段:安全配置检查
- 运维阶段:持续监控
学习资源
- OWASP官方指南和Cheat Sheet Series
- PortSwigger Web Security Academy(免费实战训练)
- HackerOne披露的漏洞报告
Web安全不是可选项,而是每个开发者的必修课。理解OWASP Top 10是安全之旅的第一步。
