跳到内容

安全与依赖基线

本文档用于 V1.0 前的安全和依赖基线复查。安全开发原则请看 Security,升级流程请看 升级指南,真实厂商和真实链路验收请看 外部 Provider 验收清单

运行基线

基线
JDK17+
Spring Boot4.x
MySQL5.7+;Docker 默认 8.4
PostgreSQL15+;Docker 默认 18
Redis6.2+;Docker 默认 8
H22.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 和后台运维入口已按环境控制访问范围。

依赖治理原则

依赖漏洞不要只按扫描器建议直接改版本。处理流程:

  1. 查 Maven Central / mvnrepository、官方 release notes、GitHub advisory 或 CVE 描述。
  2. 用 Maven dependency tree 确认传递路径。
  3. spring-open-dependencies 统一管理版本和 exclusion。
  4. 受影响 starter 显式声明自己真正需要的受控依赖。
  5. 执行模块测试或应用聚合测试。
  6. .ai/memory/testing.md.ai/memory/verification.md 记录验证结果。

当前受控依赖

以下依赖曾因安全扫描重点关注,当前统一受 spring-open-dependencies 管理:

依赖当前版本来源 / 用途
org.apache.tika:tika-core3.2.2x-file-storage 传递依赖
org.bouncycastle:bcprov-jdk18on1.84Web3 / 支付相关加密能力
org.dom4j:dom4j2.2.0支付生态传递依赖替代旧坐标
com.squareup.okhttp3:okhttp4.12.0支付生态 HTTP 客户端
com.squareup.okio:okio3.6.0OkHttp 官方依赖组合

本地复核命令:

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.txt

V1.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:dom4jbcprov-jdk15on 或旧 OkHttp / Okio,应先追踪传递路径,再在依赖管理层修复。

上线安全检查

发布或部署前至少检查:

类别检查
AuthJWT secret、密码策略、验证码、登录限流
IAM管理员账号、角色权限、数据权限、操作日志
WebCORS、安全响应头、TraceId、异常脱敏
Storage私有文件受控下载、公开文件路径、对象存储密钥
Payment回调验签、回调日志、订单幂等、证书路径
Web3私有 RPC 不对外输出、私钥脱敏、链上写操作审计
Open PlatformappSecret 只显示一次、签名、防重放、scope、限流
Dockerstorage/ 持久化、Nginx /api/ws、健康检查

文档和发布要求

  • 新增安全配置必须同步 docs/zh-CN/security.md 或对应模块文档。
  • 新增外部依赖必须说明原因、影响和替代方案。
  • 依赖安全升级必须记录验证命令和结果。
  • 正式版本发布前,发布说明中要列出安全相关变更。

Released under the Apache License 2.0.