分享 ComfyUI 工作流前,先扫一下有没有把密钥、私有链接一起带出去

0 阅读2分钟

在 ComfyUI 里折腾久了,总免不了要把工作流发给别人——发教程、卖工作流、让同事复现。工作流本质是一段 JSON(导出 PNG 时还会把这段 JSON 塞进图片元数据里),里面除了节点和连线,经常混着不该出去的东西:

  • api_key / sk-... 这类密钥
  • tokensignatureexpires 的签名 URL
  • /Users/xxx/... 这类暴露你本机账号名的绝对路径
  • 没锁版本的自定义节点、没哈希的模型引用

这些一旦发出去,轻则暴露隐私,重则密钥被人拿去刷。

我做了个小工具 ComfyHandoff,专门在分享前做一次本地检查 + 生成一份「能给别人看」的干净副本。

用法

git clone github.com/Closer2Vyz/… cd comfyhandoff npm ci && npm run build

只读检查:列出风险,用指纹/长度代替原文

node dist/cli.js check workflow.json

生成交接包:脱敏工作流 + 清单 + SARIF + 报告 + 校验和

node dist/cli.js pack workflow.json --out handoff check 的输出不会打印密钥原文: COMFY001 [error] .nodes[0].inputs.apikey:Probablesecretdetected.(characters=18,fingerprint=c27446c4854e)COMFY003[error].nodes[0].inputs.api_key: Probable secret detected. (characters=18, fingerprint=c27446c4854e) COMFY003 [error] .nodes[0].inputs.endpoint: Signed or private URL may expose access credentials. (host=example.invalid, protectedParameters=expires,token) COMFY002 [warning] $.nodes[0].inputs.input_path: Absolute local path may disclose local account information. (pathClass=posix-absolute) pack 会在一个全新目录里生成 5 个文件: handoff/ workflow.public.json # 只替换策略选中的字段,其余原样保留 handoff.manifest.json # 指纹、节点/模型清单、版本 findings.sarif # 机器可读的扫描结果 REPORT.md # 给人看的审查摘要 checksums.sha256 # 产物校验和

几个设计点

  1. 全程本地:不上传媒体、不执行工作流、不发网络请求、不覆盖已有目录,也不动你的源文件。
  2. 策略驱动脱敏:默认只替换密钥和签名链接,路径、提示词是否脱敏由 YAML 策略显式决定;未识别的字段保留并标注,不假装安全。
  3. 报告不放原文:只放路径、规则号、掩码指纹、长度、主机名、文件名。

边界也直说:它不能证明一个工作流「绝对没有隐私」,也不能帮你解析/安装自定义节点或下载模型——它只做能确定性检测的那些事。

仓库:github.com/Closer2Vyz/… (TypeScript / Node 22 / MIT,CI 已过)

如果你经常分享或卖 ComfyUI 工作流,欢迎拿一个真实的跑一下,告诉我还有哪些泄露模式它漏掉了。