2017-06-03 76 views
7

Chcę przekazać kod do GitHub. Zawiera jakiś prywatny klucz API, którego nie chcę publikować. Czy istnieje sposób, aby ukryć to automatycznie? Czy powinienem usunąć ją ręcznie z mojego kodu?Jak przesłać kod do Github ukrywając klucze API?

+2

Nigdy nie zatwierdzaj niczego, co zawiera informacje, których nie chcesz widzieć. –

Odpowiedz

6

Należy rozważyć użycie plików .env i odczytać klucze ze zmiennych środowiskowych. Sposób wykonania zależy od używanego języka i narzędzi (w przypadku node.js, php itp.).

Możesz wykluczyć plik .env z zatwierdzeń, dodając .env do .gitignore. Możesz również przesłać przykładową konfigurację .env.example z danymi fikcyjnymi lub pustymi, aby wyświetlić schemat wymagany przez aplikację.

5

Posiadanie klucza API w kodzie to i tak prawdopodobnie zły pomysł. Oznacza to, że każdy, kto chce użyć twojego kodu, będzie musiał edytować kod i odbudować go.

Rozwiązaniem podręcznika dla takich przypadków użycia jest przeniesienie poświadczeń do pliku konfiguracyjnego i dodanie jasnej dokumentacji w pliku README.md o strukturze i położeniu pliku konfiguracyjnego. Możesz również dodać do niego wpis w swoim pliku gitignore, aby uniemożliwić sobie (i nikomu innemu) niepoprawne przekazanie prywatnych informacji do GitHub.

2

Możesz dodać enviornment variables do swojego serwera, aby ukryć swoje klucze API. Wszystkie popularne języki programowania mają domyślne metody uzyskiwania zmiennych środowiskowych.

3

każdym razem masz pliki z danymi sensownych jak

config.yml 

NIE MUSI popełnić je w swoim repozytorium. Pokażę ci przykład.

przypuszczać, aby mieć plik yaml z jakąś nazwę użytkownika i hasło:

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

Jeśli chcesz ukryć foo i distribution` plik bar values, remove this file from your repository, but add just a że dąży do utrzymania pola nazwy użytkownika i hasła, ale bez prawdziwych wartości:

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

Podczas instalacji można uzyskać ten plik, kopiowanie app/config/credentials.yml.dist do app/config/credentials.yml.

Pamiętaj też, aby dodać app/config/credentials.yml do swojego pliku .gitignore.

jego samego na klucze API:

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

To działa dla plików konfiguracyjnych, a to dobry wzór, który oszczędza za każdym razem trzeba podzielić strukturę konfiguracji, ale nie dane sensowne. Pliki Ini, konfiguracje i tak dalej.

+0

Dziękuję za informacje. :) –

+0

Proszę, wyjaśnij, powróć do O_o – sensorario