如何在 GitHub 公共存储库中隐藏 API 密钥?

时间:2020-12-30 15:57:51

标签: github-pages github-actions api-key openweathermap

我正在做一个简单的前端项目,我(或用户)在其中对 openweathermap api 进行 API 调用,获取天气信息并将其显示在网站上。

简单的 HTML、CSS 和 vanilla JS

所以我想保持 repo 公开并使用 GitHub Pages 托管站点...但我的 js 文件包含运行时所需的 API 密钥。

额外信息:

(所有这些都是我搜索时发现的)

我知道有一种方法可以将 API 密钥保存在 GitHub 机密中,然后在 yml 文件中将其作为 GitHub 操作中的环境变量引用。 但是如何在运行时为访问我网站的任何用户将该秘密放入 js 代码中?

1 个答案:

答案 0 :(得分:7)

请注意,您尝试执行的操作并不安全。即使有办法让 GH Pages 在请求时将秘密 API 密钥注入到 js 文件中,每个 Web 客户端也会有一个该 js 文件的副本,其中嵌入了明文密钥。

您将需要某种最小后端来安全地存储 API 密钥并将来自静态网页的调用中继到 openweathermap API。

有很多方法可以设置这样的后端。评论中链接的 older question 讨论了一些方法。请注意,如今,您可以使用无服务器 FaaS 服务,例如 AWS LambdaAzure Functions

顺便说一下,这是一个完全有效的问题,您当然不会“太愚蠢”。祝你好运!