OWASP 风险
Top 10 与常见漏洞直觉。
35 分钟
OWASP 风险
OWASP Top 10 是 Web 应用 最常见、影响最大 的风险清单,不是漏洞百科全书,而是 优先级指南。后端开发应能 看到代码或 API 设计就联想到对应条目,并在 Code Review 里主动问一句。
学习目标
- 说出当前 Top 10 中 与 Java API 最相关的五条 及典型场景
- 在 Spring / MyBatis 栈里识别注入、越权、错误配置的代码 smell
- 知道何时深入 spring-boot-essentials 与 oauth-essentials
Top 10 与后端直觉(2021 版框架)
| 风险 | 一句话 | Spring 栈常见表现 |
|---|---|---|
| A01 访问控制失效 | 能调接口 ≠ 有权调 | 缺 @PreAuthorize、仅藏 UI 不校验 API |
| A02 加密机制失效 | 该加密的地方没加密 | HTTP 传密码、弱哈希、硬编码 AES key |
| A03 注入 | 把输入当代码执行 | SQL 拼接、LDAP/命令注入、不安全反序列化 |
| A04 不安全设计 | 架构层面缺控制 | 无速率限制、无多租户隔离设计 |
| A05 安全配置错误 | 默认配置上线 | 开启 actuator 全开、debug 堆栈回客户端 |
| A06 易受攻击组件 | 依赖有已知 CVE | 旧版 Spring、Log4j、未跑 mvn dependency-check |
| A07 身份认证失效 | 登录与会话设计错误 | 弱密码策略、JWT 无过期、session 固定 |
| A08 软件与数据完整性 | 更新链被篡改 | 从不校验的 URL 拉脚本、CI 密钥泄露 |
| A09 日志与监控不足 | 被打了不知道 | 无登录失败告警、无审计谁改了权限 |
| A10 SSRF | 服务端替攻击者发请求 | url 参数拉内网 metadata |
不必背编号,要背 「这类 bug 在我仓库里长什么样」。
A01 访问控制:最高频后端事故
水平越权:用户 A 改 orderId=123 为 124 读到他人订单。
垂直越权:普通用户调用 /admin/users。
防御习惯:
// 坏:只信路径里的 userId
@GetMapping("/users/{userId}/orders")
List<Order> list(@PathVariable Long userId) { ... }
// 好:与当前登录主体比对
Long current = SecurityContextHolder.getContext()...;
if (!userId.equals(current) && !isAdmin()) throw new AccessDeniedException();