如何将代码推送到 Github 隐藏 API 键?
How to push code to Github hiding the API keys?
我想将一些代码推送到我的 GitHub 存储库。这些代码使用不同的语言,如 Javascript
、Java
、Python
等。其中一些代码包含一些我不想发布的私有 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
如果您想隐藏 foo
和 bar
值,请从您的存储库中删除此文件,但添加一个旨在维护用户名和密码字段的 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
这适用于配置文件,是一种很好的模式,可以在您每次需要共享配置结构但不共享敏感数据时节省您的时间。初始化文件、配置等。
我想将一些代码推送到我的 GitHub 存储库。这些代码使用不同的语言,如 Javascript
、Java
、Python
等。其中一些代码包含一些我不想发布的私有 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
如果您想隐藏 foo
和 bar
值,请从您的存储库中删除此文件,但添加一个旨在维护用户名和密码字段的 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
这适用于配置文件,是一种很好的模式,可以在您每次需要共享配置结构但不共享敏感数据时节省您的时间。初始化文件、配置等。