- 审计报告 HJ-AUDIT-001 入库 + W1 文档回填波(技术决策版/Doc B/开发团队版废止横幅/AGENTS.md/两规则档/tech-decisions) - 创始人拍板波(2026-06-10 晚,回填铁律逐项执行): · R4=维持 D2 按 D2 改建(M-c 建 merge→idle→tycoon,动作类降 P1 留契约)→ D2 复审注+tech-decisions #6 · 鉴权七项全拍(§9.1:C 验证码+邀请码旁路/受限激活/开放注册/创作限白名单/一键登录/实名提现前/纯客户端 anonId)→ glossary+events.schema.json 同步 · A1 闸门看板建账(12+1 项含短信报备+大模型登记/算法备案/分账选型,主体已确认)+ 律所合规咨询 brief · 奇绩 ★1/2/3 定稿 + 品牌造梦→绘境清扫(4 档正文+文件名、demo 改名 huijing-ai-demo.html、禁投/禁外发横幅、内部引用 5 处) · M-c 四细节(两批 merge 先行/idle 纯前端+storage/10 校准+20 正式/拖拽为主) · R3 收口(叠加规则=IP 从创作者份额出·净额基数·平台恒 20%,eCPM 档 15/30/60)→ D3 复审注+glossary+BP:299 勘误 - W2 对外清洗收口:BP 改造版红线清洗(20 处锁风系红线词清零/独家→非独家/绝对化清零/06-10 实证+三线排序入文,留 3★ 待创始人) - 三件产出:鉴权 execution 版(V11/system 内扩展/14 @PermitAll 端点/NOT NULL 硬边界)+ Mc 模板波 review 版(已拍)+ 单位经济敏感性模型(基准 324 元/月/千DAU,覆盖基建需 1.33 万 DAU→实证 B 端现金线优先) - 两本账同步:作战清单(五件拍板项清零)+ 进度总账(三行执行记录) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
11 KiB
11 KiB
安全、合规、可靠性与一致性硬底线
本文是造梦AI 不可逾越的红线。涉及安全、合规、幂等、一致性、可靠性、可观测性与 SDK 降级。任何设计/实现违反即驳回。 蒸馏来源:
docs/architecture/系统概要设计-技术决策版.md(§3.4 SDK 降级 / §7.1-7.5 非功能 / §8 风险)、docs/architecture/系统概要设计-开发团队版.md(§4.2 / §10.5 内容安全)、docs/architecture/技术架构与模块.md(compliance 模块 T-CMP-* 技术功能,含锁风门 Gate)。 配套:编码/契约规范见engineering-conventions.md;元流程见../workflows/ai-development-protocol.md;事实蓝图见../knowledge/product-and-architecture.md;运行时/沙箱手册见../skills/runtime-and-multichannel.md。
1. 安全基线
| 层面 | 措施 | 落地阶段 |
|---|---|---|
| 接入防护 | WAF(阿里云/Cloudflare)+ DDoS 高防 | 上线前 |
| 传输 | 全站 HTTPS + HSTS + TLS 1.3 | Phase 1 |
| 鉴权 | OAuth2 + JWT + Refresh Token 轮换(access 7天 / refresh 30天) | Phase 1 |
| 权限 | RBAC + DataPermission(创作者只看自己的项目/资产) | Phase 1 |
| 游戏沙箱 | iframe sandbox + CSP + postMessage 来源校验 + schema 校验 |
Phase 2 |
| 内容安全 | 四类检测:文本 / 图片 / AI 输出 / 音频 | Phase 2 |
| 注入防护 | Prompt 注入检测 + SQL 参数化 + XSS 过滤 + SSRF 白名单(内网 IP 阻断) | Phase 1 |
| 密钥管理 | Nacos 加密 / K8s Secret,密钥 90 天轮换;禁止硬编码进代码 | Phase 1 |
| 审计 | 全量操作日志 + 保留 180 天 + 关键操作实时告警 | Phase 1 |
| 渗透测试 | 上线前一次 + 每季度一次,无 Critical/High 才放行 | 上线前 / 季度 |
权限必须在可信边界(网关 + 服务端)强制,前端不是边界。 匿名玩家只能浏览试玩,不能发布/收藏/进后台。
1.1 游戏沙箱具体配置(runtime / compliance 共守)
iframe sandbox="allow-scripts allow-same-origin"。红线(2026-06-10 审计补,HJ-AUDIT-001):allow-same-origin仅当游戏包托管于独立源(usercontent 子域,与宿主不同源)时方可使用——同源下 iframe 可触宿主 DOM/存储、甚至自移除 sandbox;独立源就绪前禁用allow-same-origin。- CSP:
script-src 'self'; connect-src 'none'(游戏内禁止任何网络请求);CSP 经游戏包托管侧 HTTP 响应头下发,不以 meta 标签为唯一依赖。 - postMessage:校验来源 origin 在白名单 + 消息 schema 校验,防伪造。
- LLM 产物消毒:GameConfig 文案字段(title/label/theme 等)入库前白名单字符集+长度校验,渲染侧一律转义后绘制,禁止 innerHTML/eval(模板驱动后 LLM 注入面=配置字符串)。
- 资源总大小 ≤ 10MB,首屏 ≤ 2MB;创作者通过**配置(非代码)**驱动游戏,平台对运行时代码有完全控制权。
1.2 内容安全分层(自部署快检 + 商用兜底)
- 第一道:
safe-content-ai(自部署)快检——免费、低延迟。 - 第二道:高风险样本送阿里云内容安全二次确认;文本/音频审核走阿里云 API;AI 输出走 Dify 节点内置 Guardrails。
- 阈值(Nacos 配置):block = 0.7(直接拦截)/ review = 0.4(送人工)/ pass < 0.4(自动通过)。
2. 创作链路 7 道门禁
在创作全链路设置 7 道门禁,确保产出质量与平台安全,缺一不可:
| 门禁 | 检测内容 | 阻断条件 | 责任模块 |
|---|---|---|---|
| ① Prompt 安全 | 违禁词 / 敏感意图 / 注入攻击 | 命中 → 拒绝 + 提示修改 | compliance |
| ② AI 产出合规 | 图片涉黄涉暴 / 文本违规 / 音频侵权 | 不通过 → 不入库 | compliance |
| ③ 资产入库 | 版权声明完整 / 与 IP 库比对 / 文件安全 | 疑似侵权 → 冻结 + 人工复核 | ip |
| ④ 组装完整性 | GameConfig JSON Schema / 必填字段 / 资源引用有效 | 缺失 → 编译失败 + 提示 | runtime |
| ⑤ 性能门禁 | 包 ≤10MB / 首屏 ≤2MB / 无外部网络请求 | 超限 → 阻断 + 优化建议 | runtime |
| ⑥ 可玩性自测 | 加载成功 / 启动成功 / 30s 无崩溃 / 结束事件触发 | 失败 → 阻断发布 | runtime |
| ⑦ 发布终审 | 标题/简介/封面/标签/适龄/全链路合规汇总 | 人工或自动决策 | bpm + compliance |
3. 幂等性(写操作必须幂等)
| 场景 | 问题 | 方案 |
|---|---|---|
| 用户重复点击"生成" | 重复创建生成任务 | 前端防抖 + 后端 idempotency_key(Redis 5min 去重) |
| MQ 重复消费 | 同一消息处理多次 | 每条消息携带 message_id,消费前查 Redis SET 已处理集合(5min TTL) |
| 支付回调重复 | 重复入账 | 订单状态机 + 乐观锁(version 字段),已完成订单不可重入 |
| 发布重复提交 | 重复创建审核流程 | project_version 唯一约束 + 状态前置校验 |
4. 分布式一致性
原则:尽量避免分布式事务,用最终一致性 + 补偿替代。
| 场景 | 涉及模块 | 方案 |
|---|---|---|
| 生成成功 → 写版本 + 扣积分 | aigc → project + pay | 本地事务写版本 + MQ 通知扣积分;扣积分失败 → 补偿(标记版本待支付) |
| 审核通过 → 上架 + 刷新 feed | bpm → project + feed | 审核通过本地事务写状态 + MQ 广播 feed 刷新缓存 |
| 支付成功 → 发货 + 通知 | pay → project/ad + community | 支付本地事务 + MQ 事件扇出(各模块独立消费) |
兜底机制(必做):定时任务扫描"中间态"超 5 分钟的记录 → 自动重试或告警。任何跨模块写都要能被对账扫描发现。
5. SLO 与可靠性策略
5.1 SLO 与 Error Budget
| 服务 | SLO | Error Budget(月) |
|---|---|---|
| 游戏流 API | 99.5% 可用 | 3.6 小时 |
| AI 生成 | 99%(允许更高失败率) | 7.2 小时 |
| 支付 | 99.9% | 43 分钟 |
5.2 可靠性策略
| 策略 | 实现 | 落地阶段 |
|---|---|---|
| 熔断降级 | Sentinel(Yudao 集成),per-API 规则 | Phase 1 |
| 生成降级 | LLM 不可用 → 确定性 Fallback 生成器(模板填充) | Phase 2 |
| 游戏加载降级 | 加载超时 5s → 自动跳过 + 错误记录 + 降权 | Phase 3 |
| 数据库高可用 | MySQL 主从(生产);MVP 单节点 + 每日全量备份 + binlog | 上线前 |
| 消息可靠 | RocketMQ 同步刷盘 + 死信队列 + 延迟消息 | Phase 2 |
| 回滚 | 每次部署保留前 3 个版本镜像,5 分钟内可回退 | CI/CD 内置 |
凡涉及外部服务、异步任务、支付、通知、文件、模型调用、远程 API,都必须处理超时、失败、重试、幂等、补偿五件事。
6. 可观测性与日志规范
| 规则 | 硬要求 |
|---|---|
| 格式 | JSON 结构化:timestamp / level / trace_id / span_id / module / message / context |
| 级别 | ERROR(需人处理)/ WARN(需关注)/ INFO(关键链路)/ DEBUG(仅 dev) |
| 脱敏 | Token / 密码 / 手机号 / 身份证 脱敏后输出(如 138****1234),禁止明文落日志 |
| trace_id | 网关入口注入,全链路透传(含 Dify / OpenGame 调用),调试模式贯穿生成→编译→加载→运行 |
| 保留 | ERROR/WARN 90 天;INFO 30 天;DEBUG 仅 dev |
告警升级链:
| 级别 | 条件 | 通知方式 | 响应时间 |
|---|---|---|---|
| P0 Critical | 服务不可用 / 数据丢失 / 安全事件 | 电话 + 短信 + 群 | 5 分钟 |
| P1 High | 5xx > 2% / 生成成功率 < 70% / 支付异常 | 短信 + 群 | 15 分钟 |
| P2 Medium | P95 > 800ms / MQ 积压 > 500 / 错误率上升 | 群通知 | 1 小时 |
| P3 Low | 非核心模块降级 / 日志异常增长 | 群通知 | 工作时间 |
7. SDK 降级铁律(WanxiangGameSDK)
SDK 是平台能力注入 iframe 沙箱游戏的唯一通道,其稳定性直接决定游戏体验,铁律不可破:
| 分类 | 模块 | 失败时游戏行为 | 用户感知 |
|---|---|---|---|
| 核心(异步不阻塞) | Lifecycle / Telemetry / ErrorTrack | 上报失败 → 静默丢弃,游戏不受影响 | 零感知 |
| 非核心(失败即跳过) | Ad | 加载失败/超时 → 跳过广告,给玩家免费奖励 | "广告不可用,已赠送奖励" |
| 非核心(失败即跳过) | Pay | 网络异常 → 提示稍后重试,不阻断游戏 | toast 提示 |
| 非核心(失败即跳过) | Social | 排行/好友失败 → 展示本地缓存或空态 | 功能降级,可继续玩 |
| 非核心(失败即跳过) | Storage | 云存档失败 → 回退 localStorage | 换设备可能丢进度 |
编码铁律:
- Plugin 层每个调用都包裹
try-catch,异常绝不向游戏抛。 - 每个 Plugin 调用带 5s 超时(
Promise.race([fn(), timeout(5000)])),失败返回 fallback 让游戏继续。 - 游戏主循环(requestAnimationFrame)永远不被 SDK 阻塞;Core 上报失败静默丢弃(稳定性 > 数据完整性)。
- 广告/支付/社交 SDK 在宿主侧 iframe 外部运行(游戏 iframe 无网络权限),游戏只通过抽象 API 触发。
合规定位:
- 同意即可用,拒绝即不可用(与抖音/微信小游戏同模式,法律基础《个保法》第13条第(二)款)。
- 识别未成年人后:禁止广告展示 + 禁止付费 + 限制时长 + 最小数据采集(实名认证后触发)。
- 隐私政策注册前强制展示,列出 SDK + 第三方 SDK(穿山甲/优量汇/微信支付等)采集的数据类型/用途/保留期;提供数据删除权入口。
8. 关键技术风险与应对
| # | 风险 | 概率/影响 | 应对 | 降级方案 |
|---|---|---|---|---|
| 1 | LLM 调用不稳定(超时/限流/幻觉) | 高/高 | Dify 内置重试+熔断 + 多供应商切换 | 确定性 Fallback 生成器 |
| 2 | 生成游戏质量不可控 | 高/高 | JSON Schema 强校验 + 可玩性自动测试 + 模板约束 | 质量不达标不入库 |
| 3 | 游戏沙箱逃逸 | 低/极高 | CSP + sandbox + 无网络 + postMessage 校验 | 检测异常立即销毁 iframe |
| 4 | OpenGame 社区停更 | 中/中 | fork 维护 + 核心 pipeline 可自维护 | 退化为纯 Dify + 模板生成 |
| 5 | Dify 版本升级不兼容 | 中/中 | 锁定版本 + 壳层隔离 | 自部署可控 |
| 6 | 广告联盟审核不通过 | 中/高 | 提前申请资质 + 内容合规前置 | 延迟广告上线,先做订阅/B端 |
| 7 | MQ 重复消费致数据不一致 | 中/高 | 消息幂等消费(§3) | 定时任务修复 + 告警 |
| 8 | 分布式事务部分失败 | 中/高 | 最终一致性 + 补偿(§4) | 中间态扫描 + 人工介入 |
| 9 | 第三方 SDK 数据泄露 | 低/极高 | 广告/支付 SDK 宿主侧隔离 + 最小权限 | 紧急下线第三方 SDK |