我找到了不错的 jekyll 模板: https://github.com/volny/stylish-portfolio-jekyll
它试图呈现一个谷歌地图,它需要谷歌地图 api 密钥,它希望存储在
_config.yml
:
# API settings
google_api_key:
这似乎不是最安全的存储密钥的方法,因为任何人都可以看到并使用它。 如何安全地将 google maps api 密钥存储在 github 页面的公共 repo 中?
简短的回答是:你不能.
根据设计,Google Maps Embed API 希望您在请求地图的 URL 中包含 API 密钥(您可以查看您提到的模板的源代码)
这意味着您的 API 密钥将始终在浏览器中呈现的结果 HTML 文件中可见。
只有 Google 可以 try 阻止其他人使用您的 API 密钥(例如,通过检查提供地图的站点的 URL)。你无能为力。
谷歌所能做的就是让某人更难重用API密钥。他们无法以可靠的方式真正阻止它。这只是网络运作方式的本质。访问您网站的人将是请求地图的人 - 因此,例如,您不能限制可以调用 API 的人的 IP 地址,除非您确切知道这些用户是谁(如果您的网站是公共网站,这是你的情况)。
不幸的是,在公共存储库中存储 api 密钥确实没有安全的方法。
请参阅在公共存储库中隐藏密钥以进行进一步讨论。
还是没有解决办法?
我在 Github Pages 上有一个博客,是我用 Quarto 构建的。该存储库在 Github 上公开。我计划发布一篇博文,其中包含需要 Google 地图 API 的交互式 Google 地图。然而,由于博客是免费的,因此存储库需要公开。我尝试将文件夹和单个文件添加到 gitignore(对于其他文件和文件夹),但 gitignore 似乎确实忽略了这些行。
长话短说,我怎样才能发布一篇包含使用 Google Map API 的交互式 Google Map 的博文,同时又不会因为公开而危及 API?