скрыть ключ API для страницы Github

У меня есть страница на github для моей организации, где я хотел бы вызывать данные из стороннего API, где мне нужен токен аутентификации. Могу ли я опубликовать эту страницу на github без отображения токена авторизации в общедоступном репо?


person Connor Leech    schedule 21.02.2014    source источник


Ответы (4)


Короче нет. Если ваше репозиторий GitHub является общедоступным, все его активы являются общедоступными. Вы можете сделать репозиторий закрытым, и он по-прежнему будет публиковаться на страницах GitHub, если он назван в соответствии с соглашением username.github.io или если у него есть ветка gh-pages. Хотя это вариант, это не обязательно правильно.

Если ваш ключ находится в репозитории GitHub Pages, похоже, он используется для вызовов API на стороне клиента в JavaScript. Если это так, ваш токен аутентификации является общедоступным, независимо от того, находится ли он в вашем общедоступном репо или отправлен в ваших клиентских файлах в браузер. Обычно это нормально. Сторонний API мог сгенерировать токен аутентификации на основе домена вашего веб-сайта и ограничить вызовы с использованием этого токена на страницы, происходящие из вашего домена. В противном случае им может потребоваться токен аутентификации только для регистрации запросов и мониторинга использования.

Если токен аутентификации действительно должен быть частным, вам может потребоваться написать частный серверный код для вызова стороннего API. После этого ваш сайт GitHub Pages может попасть в ваш сервис за необходимыми данными. Мне приходилось делать это раньше, когда у веб-API были проблемы с безопасностью, но мне все еще нужно было получать неконфиденциальные данные со стороны клиента.

person Will Klein    schedule 21.02.2014
comment
это то, что мне нужно было услышать. Спасибо! - person Connor Leech; 22.02.2014

Короче говоря, да, вы можете сохранить токен аутентификации в переменной среды и использовать gitignore в файле .env, чтобы скрыть токен аутентификации в публичное репо. Обновите токен аутентификации в клиентском API, затем отправьте изменения в общедоступное репо и повторно разверните свои обновления в ветке gh-pages. Ниже я привел пример этого процесса.

ПРИМЕЧАНИЕ

Если вы зафиксировали пароль или ключ API, измените его! Если вы зафиксировали ключ, сгенерируйте новый. Ознакомьтесь с общими рекомендациями на GitHub < / а>.

Если вы используете React для своего приложения, ПРОПУСТИТЕ шаги 1 и 2, поскольку React уже предустановлен с пользовательскими переменными среды. См. Ссылку Create React App.

Полное объяснение можно найти ниже:

1. Установите зависимость dotenv в корневой каталог приложения (в этом примере будет использоваться Node.js). Ссылка npm, выполните команду:

npm install dotenv

2. Добавьте код ниже, чтобы импортировать операторы в файл index.js.

require('dotenv').config();

3. Создайте файл .env в корневом каталоге приложения и добавьте токен аутентификации в качестве переменной. Обратите внимание, что при использовании React вы должны добавить к имени переменной REACT_APP_

AUTH_TOKEN=987asc8iks0lenv7

4. Используйте console.log () в process.env, чтобы проверить, правильно ли сохранена переменная.

console.log(process.env.AUTH_TOKEN);

5. Обновите все ссылки на токен аутентификации в коде приложения.

OLD VARIABLE: const auth_token = '987asc8iks0lenv7';

NEW VARIABLE: const auth_token = process.env.AUTH_TOKEN;

6. Создайте и добавьте файл .gitignore в корневой каталог приложения и добавьте код ниже, чтобы git игнорировал .env < / strong> файл, в котором хранится токен аутентификации.

.env

7. Добавьте, зафиксируйте и отправьте обновления в главную ветку приложения на GitHub.

8. Для развертывания или повторного развертывания обновлений в ветке gh-pages. Используйте команду ниже.

npm run deploy

person Webalation    schedule 17.05.2020
comment
Разве ваш AUTH_TOKEN не будет по-прежнему отображаться как часть запроса, который можно просмотреть на вкладке «Сеть» в инструментах разработчика браузера? Похоже, это не решает фундаментальную проблему, связанную с вызовом непосредственно из клиентского кода. - person A N; 25.11.2020
comment
Нет, ваш AUTH_TOKEN не будет отображаться, поскольку он будет храниться в переменной окружения. Вы также добавляете файл .env в свой файл .gitignore, который скрывает его из истории коммитов. - person Webalation; 25.11.2020
comment
Он не будет отображаться в общедоступном репозитории (разумеется, именно об этом и задается вопрос), но, как упомянул Уилл Кляйн в своем ответе, он по-прежнему будет доступен и доступен для просмотра в браузере. Это все еще заслуживает внимания. - person A N; 25.11.2020

Ответ Ashen не сработает для этого варианта использования. Секреты, настроенные через Github, доступны только для действий Github (см. документацию), и из-за этого - на практике - в основном для CI / CD-подобных приложений. Не для, например, вызовы клиентского API.

person Dirk    schedule 22.11.2019

GitHub Actions должны облегчить вашу задачу.

Вы можете добавлять секреты с помощью визуального редактора рабочего процесса или настроек репозитория. После создания секрета GitHub немедленно шифрует значение, и вы больше не можете просматривать или редактировать значение. Любой, у кого есть доступ на запись в репозиторий, может создавать и использовать секреты в этом репозитории.

Однако GitHub Actions в настоящее время доступны в общедоступной бета-версии, поэтому их следует избегать для важных рабочих процессов и контента в течение этого периода бета-тестирования.

person Ashen Gunaratne    schedule 02.03.2019