Ren*_*ato 5 security release github-api
我决定尝试在 GitHub 上管理我的一个应用程序的发布,就像使用 GitHub Actions 一样,我可以在 Mac、Linux 和 Windows 上进行构建,并自动将工件推送到 GitHub 发布页面,任何人都可以从该页面下载该应用程序。
但是,我希望我的应用程序能够自我更新,因此应用程序本身还需要能够查询存储库版本中的最新版本,然后下载用户操作系统的相关资产......我认为这将是一个不是问题...但是,如果没有 OAuth 应用程序或个人访问令牌,则无法访问 GitHub API v4。
我不需要 OAuth 应用程序,因为我的应用程序的用户绝对不会是 GitHub 客户。因此,我尝试使用个人访问令牌,其唯一范围是访问公共发布资产(同样,这是任何人都可以手动下载的公共资源)。
由于此令牌无法执行您或其他任何人无法手动执行的任何操作,即使没有 GitHub 帐户,我认为将令牌放在我的应用程序的源代码中就可以了,但是 GitHub 在检测到时会撤销该令牌它在提交上。
有没有好的方法来解决这个问题?我应该将令牌放入 GitHub 秘密中,然后在编译期间尝试用它替换占位符吗?我想避免这种情况,因为这让我很难在本地测试应用程序,而且,它不能解决任何问题,因为任何人都可以轻松反编译应用程序并在那里找到令牌(假设 GitHub 不会检测到秘密存在于编译期间“已处理”的源)。
任何建议,将不胜感激。
但是,如果没有 OAuth 应用程序或个人访问令牌,则无法访问 GitHub API v4。
GitHub API v3 确实支持未经身份验证的调用,但每个 IP 地址限制为 60 个请求/小时:https ://developer.github.com/v3/#rate-limiting
对于未经身份验证的请求,速率限制允许每小时最多 60 个请求。未经身份验证的请求与原始 IP 地址相关联,而不是与发出请求的用户相关联。
最新版本 API文档将向您显示返回的信息,但我怀疑您需要对列表资产进行二次调用才能发布进行二次调用,以了解客户端需要下载的文件。
如果这不令人满意(例如,您知道将有许多客户端尝试使用相同的 IP 地址进行更新),并且您想确保它们不受速率限制,请继续阅读其他方法。
有没有好的方法来解决这个问题?
我的解决方法是部署一个小型 Web 服务(例如 Heroku dyno),您的应用程序无需身份验证即可调用该服务,然后执行最新版本的实际查找(使用作为环境变量嵌入的 PAT)并返回客户端可以理解的简单 JSON 响应。
好处:
/latest/beta或/latest/stable表明它正在寻找特定频道缺点: