本文档由 g2rain-app-clidocs/security/security-boundaries.md 自动同步生成。
# 安全边界

# 路径

  • 项目名和模板路径都视为不可信输入。
  • 最终目标必须解析为预期父目录内的直接子目录,不接受绝对路径、..、分隔符逃逸或平台保留名。
  • 不覆盖已有目录;临时目录清理只针对本次创建且已验证的路径。
  • 明确符号链接策略,避免复制时越过模板根目录或写入目标外部。

# 外部命令与网络

  • Git clone 使用参数数组进程 API,不拼接 shell 字符串。
  • 模板仓库、Ref 和下载来源必须可信、可追踪,正式版本建议校验 Commit/完整性。
  • 网络错误、认证提示和 Git 输出不应泄露 Token/代理凭据。
  • 不自动执行模板内脚本、postinstall 或任意命令,除非用户明确同意且安全模型完整。

# 模板供应链

  • 不复制 .git、node_modules、dist、密钥、生产配置和本机状态。
  • 模板/CLI/Profile 版本建立兼容关系,防止同一 CLI 版本静默生成不同架构。
  • 生成后依赖安装仍执行第三方 package 生命周期脚本,开发者应审查 lockfile、registry 和依赖来源。
  • npm 发布启用组织权限、2FA/provenance,并检查 tarball 不含源码外 Secret。

# 输入与日志

  • 项目名和 Context Path 使用允许列表校验,并在错误中显示安全、可操作提示。
  • 环境变量 G2RAIN_TEMPLATE_PATH 只作为路径,不作为 shell 片段。
  • 不打印 npm Token、Git 凭据、私有仓库 URL 中的 Secret 或完整环境。
  • 生成项目不得从模板继承生产 Token、私钥、Cookie 或用户数据。

# 漏洞报告

按根目录 SECURITY.md (opens new window) 私下报告,说明受影响的是 CLI、模板还是生成项目,不创建包含利用细节的公开 Issue。