安全与依赖基线
本文档用于 V1.0 前的安全和依赖基线复查。安全开发原则请看 Security,升级流程请看 升级指南,真实厂商和真实链路验收请看 外部 Provider 验收清单。
运行基线
| 项 | 基线 |
|---|---|
| JDK | 17+ |
| Spring Boot | 4.x |
| MySQL | 5.7+;Docker 默认 8.4 |
| PostgreSQL | 15+;Docker 默认 18 |
| Redis | 6.2+;Docker 默认 8 |
| H2 | 2.x,仅用于 lite / 测试 |
| API 路由 | /api/v1/{domain}/** |
| 配置前缀 | spring.open.* |
必改生产配置
上线前必须确认:
APP_SECRET已覆盖为强随机值;如部署方为 JWT、支付、Web3、AI 或开放平台配置了专用密钥,专用密钥优先。- 数据库、Redis、支付、短信、邮件、对象存储、Webhook、Web3 私钥和证书不进入 Git。
- 安装令牌如果启用,使用环境变量或安全配置注入;不启用时保持为空。
- 私有文件不放公开目录。
- 外层 Nginx 已代理
/api/**,其中/api/ws可返回101 Switching Protocols。 - OpenAPI、Actuator 和后台运维入口已按环境控制访问范围。
依赖治理原则
依赖漏洞不要只按扫描器建议直接改版本。处理流程:
- 查 Maven Central / mvnrepository、官方 release notes、GitHub advisory 或 CVE 描述。
- 用 Maven dependency tree 确认传递路径。
- 在
spring-open-dependencies统一管理版本和 exclusion。 - 受影响 starter 显式声明自己真正需要的受控依赖。
- 执行模块测试或应用聚合测试。
- 在
.ai/memory/testing.md和.ai/memory/verification.md记录验证结果。
当前受控依赖
以下依赖曾因安全扫描重点关注,当前统一受 spring-open-dependencies 管理:
| 依赖 | 当前版本 | 来源 / 用途 |
|---|---|---|
org.apache.tika:tika-core | 3.2.2 | x-file-storage 传递依赖 |
org.bouncycastle:bcprov-jdk18on | 1.84 | Web3 / 支付相关加密能力 |
org.dom4j:dom4j | 2.2.0 | 支付生态传递依赖替代旧坐标 |
com.squareup.okhttp3:okhttp | 4.12.0 | 支付生态 HTTP 客户端 |
com.squareup.okio:okio | 3.6.0 | OkHttp 官方依赖组合 |
本地复核命令:
bash
./mvnw -pl spring-open-application -am dependency:tree \
-DskipTests -DskipITs -DskipFrontend \
'-Dincludes=org.bouncycastle:*,org.apache.tika:*,dom4j:*,org.dom4j:*,com.squareup.okhttp3:*,com.squareup.okio:*' \
-DoutputFile=target/security-dependency-tree.txtV1.0 前最近一次本地复核结果:
text
org.bouncycastle:bcprov-jdk18on:1.84
org.apache.tika:tika-core:3.2.2
org.dom4j:dom4j:2.2.0
com.squareup.okhttp3:okhttp:4.12.0
com.squareup.okio:okio:3.6.0如果 dependency tree 再次出现旧坐标 dom4j:dom4j、bcprov-jdk15on 或旧 OkHttp / Okio,应先追踪传递路径,再在依赖管理层修复。
上线安全检查
发布或部署前至少检查:
| 类别 | 检查 |
|---|---|
| Auth | JWT secret、密码策略、验证码、登录限流 |
| IAM | 管理员账号、角色权限、数据权限、操作日志 |
| Web | CORS、安全响应头、TraceId、异常脱敏 |
| Storage | 私有文件受控下载、公开文件路径、对象存储密钥 |
| Payment | 回调验签、回调日志、订单幂等、证书路径 |
| Web3 | 私有 RPC 不对外输出、私钥脱敏、链上写操作审计 |
| Open Platform | appSecret 只显示一次、签名、防重放、scope、限流 |
| Docker | storage/ 持久化、Nginx /api/ws、健康检查 |
文档和发布要求
- 新增安全配置必须同步
docs/zh-CN/security.md或对应模块文档。 - 新增外部依赖必须说明原因、影响和替代方案。
- 依赖安全升级必须记录验证命令和结果。
- 正式版本发布前,发布说明中要列出安全相关变更。