diff --git a/docs/【技术方案】游戏共创与作品Fork-2026-10-03.md b/docs/【技术方案】游戏共创与作品Fork-2026-10-03.md index 42b350395..4ab310ab5 100644 --- a/docs/【技术方案】游戏共创与作品Fork-2026-10-03.md +++ b/docs/【技术方案】游戏共创与作品Fork-2026-10-03.md @@ -359,7 +359,7 @@ pub(crate) project_bundle_sha256: Option, #### 3.5.2 工程源包路径(源码级复刻,现为正解路径) - **打包(AGC,已落地)**:客户端 `project_bundle` 模块做**确定性打包**(条目排序 + 固定时间戳,同内容同摘要),排除 `.agent` / `.git` / `.svn` / `node_modules` 段(任意层级)与根 `dist` / `build` / `library` / `temp` / `local` / `.idea` / `.vscode`;客户端自身另有总量上限(512 MiB)。 -- **服务端复核(已落地,**不信任客户端**)**:`module-game-distribution/src/project_bundle.rs` 的 `validate_project_bundle_zip` 独立校验上传内容——上限与发行包**逐项相等**(压缩包 200 MiB / 展开 500 MiB / 单文件 64 MiB / 条目 10 000 / 压缩比 100,理由是两者共用同一条上传链路,反代与 Pingora 的放行量就是按 200 MiB 校准的);额外拦凭据与隐私文件(`.env`、`.env*`、`*.pem`、`*.key`、`*.p12`、`*.pfx`、`.npmrc`、`.netrc`、`.git-credentials`、`id_rsa*`、`id_ed25519*`、`*.map`)、嵌套 `.zip`、符号链接、加密条目与不安全路径;**不要求**根 `index.html`(源码包没有入口约定)。 +- **服务端复核(已落地、不信任客户端)**:`module-game-distribution/src/project_bundle.rs` 的 `validate_project_bundle_zip` 独立校验上传内容——上限与发行包**逐项相等**(压缩包 200 MiB / 展开 500 MiB / 单文件 64 MiB / 条目 10 000 / 压缩比 100,理由是两者共用同一条上传链路,反代与 Pingora 的放行量就是按 200 MiB 校准的);额外拦凭据与隐私文件(`.env`、`.env*`、`*.pem`、`*.key`、`*.p12`、`*.pfx`、`.npmrc`、`.netrc`、`.git-credentials`、`id_rsa*`、`id_ed25519*`、`*.map`)、嵌套 `.zip`、符号链接、加密条目与不安全路径;**不要求**根 `index.html`(源码包没有入口约定)。 - **上传(AGC,已落地)**:发布链路在「授权非 `forbidden`」时随版本上传工程源包(失败**不阻断**发布,按可重试处理);面板明确提示「未上传工程包,你的作品只能被他人试玩与参考(不能直接重新发布)」。是否有工程包**不改变**授权是否开放(见 §3.2.3 的产品口径)。客户端规则与服务端对齐,并有机器门禁 `npm run check-project-bundle-policy-parity` 钉住两端排除清单/上限一致(含路径形状维度,见下)。 - **凭据/依赖识别补强(2026-10-05 对抗性复核后)**:除上面那份清单,还拦任意层级的 `.aws` / `.ssh` / `.kube` / `.docker` / `.gnupg` / `.terraform` / `.secrets`,以及文件名前缀 `credentials` / `id_ecdsa` / `id_dsa` / `terraform.tfstate` / `service-account`、后缀 `.jks` / `.keystore` / `.ppk` / `.p8` / `.kdbx` / `.der`、全名 `.htpasswd` / `.pgpass`。另外对**小体积文本条目**做内容特征扫描(PEM 私钥块标记、AWS `AKIA…`、GitHub `ghp_` / `github_pat_`、Slack `xox*`)——这是唯一能兜住「未知凭据文件名」的形状;更宽的前缀启发(例如 `sk-`)**故意不做**,因为误报会直接阻断作者发布,收益与代价不成比例。 - **嵌套包识别**:扩展名并集 `.zip` / `.tar` / `.gz` / `.tgz` / `.7z` / `.rar` / `.jar` / `.whl` / `.nupkg`,**并对每个条目按 magic bytes 嗅探**(`PK\x03\x04`、`7z`、`Rar!`、gzip、tar 的 `ustar`)——改名成 `.dat` 也拦。客户端打包器同款检查,命中即报错(指明路径与格式),不静默跳过。