存储位置
评论数据可以放在评论系统自己的仓库,也可以放在另一个仓库。由 COMMENTS_REPO 的值决定,没有额外开关。
推荐不同仓库
两者都支持,但不是平级选项。
1. 爆炸半径
- 不同仓库:PAT 泄露 = 攻击者能往评论仓库写垃圾文件
- 同仓库:PAT 泄露 = 攻击者能往「正在运行这段函数」的仓库推代码 → 平台 Git 集成自动部署 → 攻击者拿到函数运行时,可读取全部环境变量(含
GITHUB_TOKEN与COMMENTS_SECRET),等于完整接管
2. 自身重新部署
平台 Git 集成监听的是「仓库 push」,不是「代码 push」。每次批准评论都会让函数重建一次。功能上无害,但会消耗构建分钟数。
各平台跳过构建的方式:
3. 硬约束
构建过程绝对不能写回仓库。 写入只发生在 approve 动作里,构建永远只读。否则同仓库会变成无限部署循环。
同仓库告警
若配置了 SELF_REPO 且与 COMMENTS_REPO 相同,/api/health 会返回 sameRepo: true 并附警告。不填 SELF_REPO 则不比对、不告警。
对客户端透明
无论同仓还是异仓、私有还是公开,widget 配置完全一致。只有服务端的 COMMENTS_REPO 不同。