安全概览
OWASP Top 10 是 Web 应用重要安全风险的清单。了解它们是安全编码的基础。
1. OWASP Top 10 (2025)
| 排名 | 风险 | 说明 | 防御 |
|---|---|---|---|
| A01 | 访问控制失效 | 越权访问、服务端请求伪造(SSRF) | 最小权限、服务端逐请求授权、对象级与数据级访问控制 |
| A02 | 安全配置错误 | 默认密码、不必要的端口 | 最小化配置、定期审计 |
| A03 | 软件供应链失效 | 依赖、构建、分发链路被入侵或篡改 | SBOM、依赖扫描、供应链防护 |
| A04 | 加密机制失效 | 明文存储、弱加密 | 强加密、密钥管理 |
| A05 | 注入 | SQL/NoSQL/OS 注入 | 参数化查询、输入校验 |
| A06 | 不安全设计 | 架构层面的安全缺陷 | 威胁建模、安全评审 |
| A07 | 认证失效 | 弱密码、暴力破解 | MFA、限流、密码策略 |
| A08 | 软件或数据完整性失效 | 未验证的软件与数据被信任 | 签名校验、完整性验证、构建流程权限控制 |
| A09 | 安全日志与告警失效 | 安全事件难以及时发现和响应 | 日志、告警、SIEM |
| A10 | 异常条件处理不当 | 异常路径、边界条件、失败开放 | 失败关闭、异常路径测试 |
2. 安全编码原则
认证与会话管理见 认证,访问控制与数据权限见 授权;SQL 注入、XSS、CSRF 等攻击的原理与防御代码见 常见攻击与防御。
判断一个系统是否满足这些原则,需要识别资产与信任边界,分析威胁,选择控制,再验证控制有效性。
- 最小权限:每个组件只拥有必要的权限
- 纵深防御:多层安全措施,不依赖单一防线
- 默认安全:默认配置应该是安全的
- 输入验证:所有外部输入都不可信,校验其格式、范围与业务约束
- 参数化查询:永远不要拼接 SQL
- 敏感数据加密:传输用 TLS,存储用强加密
- 日志审计:记录必要的安全相关事件(身份、操作、目标资源、结果),避免记录密码、令牌等敏感凭据