如何将代码推送到 Github 隐藏 API 键?

How to push code to Github hiding the API keys?

我想将一些代码推送到我的 GitHub 存储库。这些代码使用不同的语言,如 JavascriptJavaPython 等。其中一些代码包含一些我不想发布的私有 API 密钥。

有什么方法可以自动隐藏按键吗?我应该手动将其从我的代码中删除吗?

有很多项目想推送到GitHub。因此,手动删除不是一个好的选择。

将您的 API 键放在代码中无论如何可能不是一个好主意。这意味着任何其他想要使用您的代码的人都必须编辑并重建代码。

此类用例的教科书解决方案是将凭据移至某个配置文件,并在 README.md 文件中添加关于配置文件结构和位置的清晰文档。您还可以在 gitignore 文件中为它添加一个条目,以防止您自己(和其他任何人)将您的私人信息错误地推送到 GitHub。

您可以在您的服务器中添加 enviornment variables 来隐藏您的 API 密钥。所有流行的编程语言都有默认方法来评估环境变量。

您应该考虑使用 .env 文件并从环境变量中读取密钥。如何执行此操作取决于您使用的语言和工具(对于 node.js, php 等)。

您可以通过将 .env 添加到 .gitignore 来从提交中排除 .env 文件。您还可以上传带有虚拟数据或空白的示例配置 .env.example,以显示您的应用程序所需的架构。

任何时候你的文件包含敏感数据,例如

config.yml

您不得将它们提交到您的存储库。我给你举个例子。

假设您有一个带有一些用户名和密码的 yaml 文件:

# app/config/credentials.yml
credentials:
    username: foo
    password: bar

如果您想隐藏 foobar 值,请从您的存储库中删除此文件,但添加一个旨在维护用户名和密码字段的 distribution 文件,但没有任何实际价值:

# app/config/credentials.yml.dist
credentials:
    username: ~
    password: ~

在安装过程中,您可以通过将 app/config/credentials.yml.dist 复制到 app/config/credentials.yml 来获取此文件。

此外,记得将 app/config/credentials.yml 添加到您的 .gitignore 文件中。

与api键相同:

# app/config/config.yml
config:
    credentials:
        username: foo
        password: bar
    api_stuffs:
        api_foo: fooooo
        api_secret: baaaaar
        api_token: tooooken

这适用于配置文件,是一种很好的模式,可以在您每次需要共享配置结构但不共享敏感数据时节省您的时间。初始化文件、配置等。