Как нажимать код на Github, скрывая ключи API?
Я хочу отправить некоторые коды в мой репозиторий GitHub. Эти коды написаны на разных языках, таких как Javascript
, Java
, Python
и т.д. Некоторые из этих кодов содержат некоторый закрытый ключ API
который я не хочу публиковать.
Есть ли способ скрыть ключи автоматически.? Должен ли я удалить его из своего кода вручную.
Есть много проектов, которые я хочу перенести на GitHub. Таким образом, ручное удаление не является хорошим вариантом.
Ответы
Ответ 1
Вам следует подумать об использовании файлов .env
и прочитать ключи из переменных среды. Как это сделать, зависит от языка и инструментов, которые вы используете (для node.js, php и т.д.).
Вы можете исключить файл .env
из коммитов, добавив .env
в .gitignore
. Вы также можете загрузить пример конфигурации .env.example
с фиктивными данными или пробелами, чтобы показать схему, необходимую для вашего приложения.
Ответ 2
Наличие вашего ключа API в коде, вероятно, плохая идея. Это означает, что любой, кто хочет использовать ваш код, должен будет отредактировать код и перестроить его.
Решение для учебников для таких случаев - перенос учетных данных в какой-либо файл конфигурации и добавление четкой документации в файл README.md
о том, как структура и расположение файла конфигурации. Вы также можете добавить запись в свой файл gitignore
, чтобы не допустить, чтобы вы (и кто-либо еще) не допустили вашу личную информацию до GitHub.
Ответ 3
Каждый раз, когда у вас есть файлы с разумными данными, например
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
Это работает для файлов конфигурации, и это хороший шаблон, который экономит вас каждый раз, когда вам нужно поделиться структурой конфигурации, но не разумными данными. Ini файлы, конфигурации и так далее.
Ответ 4
Вы можете добавить переменные окружения на своем сервере, чтобы скрыть ключи API. Все популярные языки программирования имеют методы по умолчанию для доступа к переменным окружения.