Как нажимать код на 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. Все популярные языки программирования имеют методы по умолчанию для доступа к переменным окружения.