Skip to content

安全与上线检查 ​

发现可能影响凭据、私有下载、支付或用户数据的安全问题时,请通过下载页或支持页面提供的私密渠道报告,不要在公开 Issue、群聊或截图中披露可利用细节。

自动安全预检 ​

docker-compose.production.yml 会为核心服务启用只读根文件系统、移除 Linux capabilities、禁止提权并提供受限 tmpfs。生产环境 schema 与 pnpm ops:template:preflight 还会拒绝:

  • 示例密码、低熵 Secret 和开发数据库地址。
  • 公网 HTTP URL、非安全 Cookie 和错误的代理信任范围。
  • Mock 支付、Mock OAuth 与本地视频模式。
  • 开启私有文件交付却未完整配置所选存储方式、短时地址或独立签名 Secret。
  • 证书、支付回调和视频回调的关键不一致。

预检失败时先修复配置,不要删除校验或改用开发 Compose 绕过。

已实现的高风险保护 ​

  • 外部 URL 获取会拒绝 loopback、私网、链路本地、保留地址、IPv4-mapped IPv6 和 CGNAT 等目标,降低 SSRF 风险。
  • 支付返回 HTML 不会通过 innerHTML 或 document.write 执行;支付宝表单只允许受信 HTTPS 主机和隐藏字段。
  • 媒体 URL 必须匹配配置的对象存储 origin 与精确 object key。
  • 私有文件由独立下载权限控制,公开列表不会返回永久下载地址或对象存储 key。
  • 服务器目录交付会校验路径边界、符号链接目标和数据库记录的文件大小,并只通过主站短时地址读取。
  • /v1/app 只返回站点身份、模块状态和 Provider 名称,不返回 Secret。
  • 生产环境会拒绝启用 Mock 支付、本地视频和其他仅供本机体验的路径。

这些保护不能替代真实环境验收。支付金额、回调签名、对象存储 ACL、OAuth 回调、邮件投递和视频转码仍需使用你自己的服务账号逐项验证。

你的生产责任 ​

  • 为数据库、Cookie、Session、CSRF、机器令牌和业务加密分别使用独立高熵密钥,并定期轮换。
  • 数据库、Redis 与服务端 API 只绑定内网或 loopback,只通过 Nginx 暴露必要的 HTTPS 入口。
  • 按最小权限配置管理员、对象存储、支付、视频、邮件、AI 和自动化任务。
  • 定期备份 PostgreSQL 与用户上传文件,并实际完成恢复演练。
  • 及时升级到受支持版本,保存升级记录和可用回滚版本。
  • 不把 .env、数据库备份、签名密钥、访问令牌、Cookie 或生产日志上传到公开仓库、公共模型和工单。

上线前最小检查 ​

  1. pnpm ops:template:preflight、类型检查、测试和生产构建全部通过。
  2. 主站与 Auth 域名使用有效 HTTPS,Cookie、CORS 和代理信任范围正确。
  3. 数据库、Redis、Mock API 和管理端口没有暴露到公网。
  4. 普通用户无法访问管理员接口,关闭模块的页面与 API 均返回 404。
  5. 支付、退款、邮件、上传、视频和 AI 分别验证成功与失败路径。
  6. 备份、监控、告警、密钥轮换和回滚负责人已经明确。

交易与权益变更检查 ​

改动价格、折扣码、兑换码、订阅、积分、退款或交易奖励时,先列出每种发放来源及其单用户、单交易、单码和全局使用上限。给出服务器计算的金额快照、唯一业务键、允许的状态转换,以及订单、权益、积分余额和流水之间的对账关系。免费兑换和后台补发也属于这一范围。

审核时逐一验证预览或报价、下单、最终付款确认或兑换提交三个时点的资格和额度。请求幂等键只能避免同一请求被重复处理;如果业务要求“一个用户只能领取一次”,还需要稳定的业务键和数据库约束。涉及限量优惠时要明确下单预留、预留释放和晚到付款规则。

自动化和人工验收至少覆盖重复点击、两个设备并发、最后一个名额、回调与主动查单同时到达、响应超时后重试、零元订单、金额或支付渠道不符、退款与部分退款、积分余额和流水对账。数据库约束应在隔离数据库中验证;生产小额支付只在获准的真实环境中执行,并记录订单与对账结果,不记录凭据。