【问题标题】:Cloud Functions hidden after uploading to github?上传到 github 后隐藏的云功能?
【发布时间】:2020-01-14 08:24:00
【问题描述】:

我已经下载了 node.js,并在网站目录(firebase.json、functions 文件夹等)中创建了 firebase-function 文件。 如果我要在 project/functions/index.js 文件中编写 javascript 云函数,当我将它上传到我的静态网站的 Github 存储库时,它不会是私有的。 (something.github.io)

那么我将如何在不上传 index.js 的情况下将我的 index.js 中的 firebase 云函数调用到我的静态网站(以保持某些函数的私密性)?

编辑: 我现在知道存在环境变量,但是如何将其与具有 firebase Admin SDK 和云功能的 Github Pages 网站结合起来?

如何上传我的 GitHub 页面项目,同时仍将我的客户端链接到环境变量?我需要上传包含我的云功能的 index.js 吗?但是上传 index.js 也不会破坏客户端看不到函数/数据的目的吗?

下面的评论提到了一个叫做 Heroku 的软件,当我已经有 GitHub 和 firebase 与我的网站和数据库进行交互时,它的目的到底是什么?

我还看到了一种使用 dotenv 的方法,创建一个 .env 文件来放置机密数据(例如 API 密钥)并使用 gitignore 来防止文件被上传?那是否可以在 Github Pages 上运行,如果可以,客户端是否可以看到 .env?如果他们不能,客户端-服务器网站是否可以将其链接到 .env,即使它没有被推送到 Github

【问题讨论】:

    标签: javascript node.js github google-cloud-functions


    【解决方案1】:

    这是environment variables 的好用法。本质上,假设您有一个 API 密钥 12345。你有这样的功能:

    async function fetchResults() {
        await fetch("myapi.com/lookup?key=12345")
    }
    

    你可以这样做:

    async function fetchResults() {
        await fetch("myapi.com/lookup?key=${process.env.API_KEY}")
    }
    

    环境变量保存在您的计算机上,因此它永远不会进入 GitHub,因此您可以将代码公开为开源,同时保持敏感密钥的机密性。

    编辑:所以我重新阅读了您的问题,我看到您正在谈论发布到 GitHub 页面。需要注意的关键是,任何托管在客户端上的用户都可以看到。 GitHub Pages 仅托管应用程序的“客户端”部分。因此,如果您的客户端(浏览器)网站对myapi.com/lookup?key=12345 进行 API 调用,无论如何他们都将能够看到它,因为这是他们的浏览器发出请求,他们可以看到他们的浏览器所做的任何事情。

    但是,这里的最佳做法是编写服务器端代码来运行您的应用程序。为此,您可以使用我上面的建议,将环境变量添加到您用于托管的任何服务器(例如,您可以使用[Zeit Now][2]Heroku 轻松完成此操作)。这样,您可以共享您的代码,但您的环境变量在运行您的服务器端代码的机器上是保密的。

    【讨论】:

    • 我仍然对 {process.env.API_KEY} 如何仍然可以检索变量感到困惑。我的电脑是项目的,技术上是服务器吗?如何将本地磁盘中的环境变量链接到我的 Github 项目中的函数。很抱歉给您带来任何麻烦或误解,我真的很陌生。
    • 这是个好问题。我对我的帖子进行了编辑。如果这能解决任何困惑,请告诉我。
    • 如果我使用 dotenv npm 创建一个带有我的环境变量的 .env 文件,并在上传到 github 页面时使用 gitignore 隐藏该 .env 文件,它还会出现在客户端吗?或者这会是适当隐藏 API 密钥的解决方案吗?或者通过这样做,我是否无法检索环境错误?
    • 托管在 GitHub 页面上的任何内容都被视为客户端,从技术上讲,任何客户端的内容都对您网站的任何用户可见。因此,不可能在客户端隐藏任何密钥。客户端应用程序没有环境变量的概念。对于在服务器上运行的代码,这是我的解决方案可以工作的地方。 This 可能有助于澄清我的意思。
    猜你喜欢
    • 2021-12-17
    • 2021-10-28
    • 2017-12-19
    • 2010-09-17
    • 2010-09-13
    • 2010-09-23
    • 2017-12-21
    • 2020-06-01
    相关资源
    最近更新 更多