首页 > 解决方案 > 如何在 GitHub 公共存储库中隐藏 API 密钥?

问题描述

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

简单的 HTML、CSS 和原版 JS

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

额外信息:

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

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

标签: github-pagesgithub-actionsapi-keyopenweathermap

解决方案


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

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

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

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


推荐阅读