大家好,我是程序员柏风,AI 最全的 Vibecoding 学习地图 http://coderoadmap.cn 作者。
综合练习
把本 track 串起来:审查一个 Spring REST API 的安全 posture,对照 OWASP、传输、CORS、认证与运维基线,输出可执行的 remediation 清单。目标不是「找茬表演」,而是形成 可复用的 Review 模板,与 sb-security、oauth-security 衔接。
学习目标
任务说明
任选 其一:
A. 审查本站 backend(推荐)
克隆或打开 CodeRoadMap backend 模块,针对 对外 REST API(如 tracks、auth 相关)完成下方清单,记录 已满足 / 待改进 / 不适用。
B. 审查你工作中的 Spring Boot 项目
脱敏前提下(无真实密钥、hostname、客户名),对一个小模块做同样审查,写进内部 wiki 或 PR comment。
审查清单
1. 传输与边界
- 生产是否 全程 HTTPS(sec-ssl)
- 是否禁止 HTTP 传密码、token、Cookie 无 Secure
- 网关 / LB 是否正确传递
X-Forwarded-Proto
2. 认证与会话
- 密码是否 bcrypt/Argon2(sec-hash)
- 会话 Cookie 或 JWT 配置:HttpOnly、Secure、SameSite、exp(sec-auth-cookie、sec-auth-token)
- Basic 是否仅内网且 TLS(sec-auth-basic)
- 若用 OAuth/OIDC,redirect、state、PKCE(oauth-flows、oauth-pkce)
3. 授权与输入
- 敏感 API 是否 默认拒绝 + 显式放行(sec-owasp A01)
- MyBatis/JPA 是否无
${}拼用户输入(A03) -
@Valid与统一错误响应,生产无堆栈泄露(sb-validation)
4. 浏览器相关
5. 服务器与依赖
- 进程非 root、DB 最小权限、无公网 3306(sec-server)
- actuator 暴露范围、依赖 CVE 扫描(A05、A06)
- 日志无 Authorization、密码;有登录失败与权限变更审计(A09)
交付格式(示例)
## 摘要
- 系统:xxx API
- 审查日期:...
- 风险最高项:...
## 发现
| ID | 严重度 | 发现 | 建议 | 参考课时 |
|----|--------|------|------|----------|
| F1 | 高 | ... | ... | sec-ssl |
## 已做得好的地方
- ...
## 下一步(≤3 条可落地)
1. ...
可选加深
- 用 OWASP ZAP 或
curl对 未授权访问 做 smoke test - 对照 http-practice 用 DevTools 看预检与 Cookie
- 若计划上 OAuth Resource Server,读 oauth-resource 列 gap
反思题
- 哪一类问题在你的项目里 出现最多?传输、认证还是授权?
- 若只能先修 一项,你选什么?依据是什么?
- 谁对「安全默认配置」负责——框架、DevOps 还是 feature 开发者?
与路线图
完成后回到 全栈路线图,勾选 web-security 及认证相关节点。继续深入:
- 框架实战 → spring-boot-essentials
- 联邦授权 → oauth-essentials
- 协议底层 → http-protocol-essentials
练习
- 完成上表 至少 20 条 checkbox 评估
- 输出 ≥3 条 具体 remediation(含文件或配置键名)
- 与同伴交叉 review 一份 findings(可选)
小结
安全审查 = 清单 + 证据 + 可落地修复;默认拒绝、HTTPS、慢哈希、最小暴露重复出现。 本 track 完结;线上安全靠持续补丁、监控与每次 PR 的纪律。