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

Sre*_* TP 30 git github api-key

我想将一些代码推送到我的GitHub存储库.这些代码是在像不同的语言Javascript,Java,Python等某些代码包含了一些私人API,我不想公布关键.

有没有办法自动隐藏它?我应该手动将其从我的代码中删除吗?

我想推动很多项目.因此,手动删除不是一个好选择.

Prz*_*ski 18

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

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


sen*_*rio 8

任何时候你有像敏感数据的文件

config.yml
Run Code Online (Sandbox Code Playgroud)

你不能在你的存储库中提交它们.我会告诉你一个例子.

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

# app/config/credentials.yml
credentials:
    username: foo
    password: bar
Run Code Online (Sandbox Code Playgroud)

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

# app/config/credentials.yml.dist
credentials:
    username: ~
    password: ~
Run Code Online (Sandbox Code Playgroud)

在安装过程中,您可以获取此文件,复制app/config/credentials.yml.distapp/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
Run Code Online (Sandbox Code Playgroud)

这适用于配置文件,并且是一种很好的模式,可以在每次需要共享配置结构而不是合理数据时为您节省时间.Ini文件,配置等.


Mur*_*nik 7

无论如何,在代码中使用API​​密钥可能是一个坏主意.这意味着任何想要使用您的代码的人都必须编辑代码并重建它.

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


Gau*_*a R 6

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