You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

静态网站(GitHub Pages)无账号文件上传方案咨询及安全性评估

你的机器人账号方案的核心安全隐患

  • 令牌前端暴露风险:把令牌写在前端JS里,任何人都能通过浏览器开发者工具扒出来。哪怕令牌只限制了特定分支权限,攻击者拿到后可以批量上传垃圾文件、覆盖现有内容,甚至删除分支上的所有文件,直接搞垮存储分支。
  • 恶意内容上传风险:如果你的项目会渲染或使用这些上传的文件,攻击者可能上传带恶意脚本的文件(比如HTML、JS),触发XSS攻击,威胁访问项目的用户。
  • 无审计追溯性:机器人账号的操作无法关联到实际上传者,出问题后没法定位责任人,也没法快速撤销恶意提交。

符合要求的可行替代方案

方案1:前端表单+欧盟免费后端代理(推荐)

思路是把文件上传逻辑放在后端,令牌存在后端环境变量里(不暴露给前端),前端只负责收集文件和用户信息,后端做校验后用机器人账号提交到Git分支。

  • 步骤:
    1. 用HTML/JS写一个简单的上传表单,收集文件、上传者名称/邮箱(可选,用于审计)。
    2. 写一个轻量后端(比如Node.js Express/Python Flask),接收文件后做校验:
      • 限制文件类型(比如只允许图片、Markdown、文档等)
      • 限制单文件大小(比如10MB以内)
      • 简单内容扫描(比如禁止包含<script>标签的HTML文件)
    3. 后端用Codeberg/GitHub的API(比如@octokit/rest或Codeberg的REST API),用机器人账号的令牌(存在后端环境变量)提交文件到指定分支。
    4. 把后端部署到欧盟地区的免费PaaS服务:
      • Render:欧盟有法兰克福节点,免费额度够小流量使用
      • Fly.io:欧盟有阿姆斯特丹/法兰克福节点,免费额度支持轻量服务
      • Uberspace:德国的主机服务,有免费试用版,适合小项目
  • 优势:令牌不暴露,能做安全校验,可审计,完全符合无预算、欧盟服务的要求。

方案2:Codeberg Pages + 静态文件存储+定时同步(适合非即时上传场景)

如果上传不需要即时同步到Git分支,可以用欧盟的免费静态存储服务接收文件,再定时同步到Codeberg分支:

  • 用欧盟的免费WebDAV服务(比如Nextcloud的免费欧盟实例)接收文件上传
  • 写一个简单的脚本,定时(比如每天一次)把WebDAV里的文件同步到Codeberg的指定分支,脚本可以放在Codeberg CI/CD里运行(Codeberg CI在欧盟节点)
  • 优势:无需自己搭后端,利用Codeberg的免费CI资源,适合低频上传场景

额外安全建议

  • 给机器人账号设置最小权限:比如在Codeberg/GitHub里,只给该账号目标分支的写入权限,不要给仓库的其他权限。
  • 定期轮换机器人账号的令牌,避免令牌泄露后长期被滥用。
  • 对上传的文件做哈希校验,避免重复上传相同内容。
  • 如果项目会展示上传的文件,务必做内容转义(比如把HTML标签转成纯文本),防止XSS攻击。

内容的提问来源于stack exchange,提问作者Spaghettiboy

火山引擎 最新活动