How to push code to Github hiding the API keys?

后端 未结 4 1521
死守一世寂寞
死守一世寂寞 2020-12-04 22:12

I want to push some codes to my GitHub Repository. These codes are in different languages like Javascript, Java, Python etc. Some of t

相关标签:
4条回答
  • 2020-12-04 22:21

    Any time you have files with sensitive data like

    config.yml
    

    you MUST NOT commit them to your repository. I'll show you an example.

    Suppose you have a yaml file with some username and password:

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

    If you want to hide the foo and the bar values, remove this file from your repository, but add a distribution file that aims to maintain username and password fields, but without any real values:

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

    During installation you can get this file by copying app/config/credentials.yml.dist to app/config/credentials.yml.

    Also, remember to add app/config/credentials.yml to your .gitignore file.

    Its the same with api keys:

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

    This works well for configuration files, and is a good pattern that saves you every time you need to share the structure of a configuration but not sensitive data. Init files, configurations and so on.

    0 讨论(0)
  • 2020-12-04 22:21

    Having your API key in the code is probably a bad idea anyway. It means that anyone else that wants to use your code will have to edit the code and rebuild it.

    The textbook solution for such usecases is to move the credentials to some configuration file, and add clear documentation in the README.md file about how the configuration file's structure and location. You could also add an entry for it in your gitignore file to prevent yourself (and anyone else) from pushing your private information to GitHub by mistake.

    0 讨论(0)
  • 2020-12-04 22:23

    You can add enviornment variables in your server to hide your API keys. All popular programming languages have default methods to acess the enviornment variables.

    0 讨论(0)
  • 2020-12-04 22:41

    You should consider using .env files and read the keys from the environmental variables. How to do so depends on the language and tools you use (for node.js, php, etc.).

    You can exclude .env file from commits by adding .env to the .gitignore. You can also upload an example configuration .env.example with dummy data or blanks to show the schema your application requires.

    0 讨论(0)
提交回复
热议问题