【问题标题】:How can I hide an API key in a GitHub public repo?如何在 GitHub 公共存储库中隐藏 API 密钥?
【发布时间】:2021-04-07 02:59:17
【问题描述】:

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

简单的 HTML、CSS 和原生 JS

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

附加信息:

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

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

【问题讨论】:

  • 这能回答你的问题吗? hide api key for a Github page
  • 在这种情况下你不能。 GitHub Pages 仅托管静态内容,即网站的前端部分,因此您无法控制后端来隐藏秘密。

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


【解决方案1】:

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

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

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

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

【讨论】:

  • 感谢 Max 的信息,我将研究无服务器解决方案。我还尝试了该帖子中提到的 dotenv 方法(通过 npm),但它也没有在运行时提供 API。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-18
  • 2021-02-12
  • 1970-01-01
  • 2019-10-20
  • 2011-04-27
  • 2014-05-31
  • 2020-08-17
相关资源
最近更新 更多