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?
Odpowiedz
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ę.
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.
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.
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.
Dziękuję za informacje. :) –
Proszę, wyjaśnij, powróć do O_o – sensorario
Nigdy nie zatwierdzaj niczego, co zawiera informacje, których nie chcesz widzieć. –