У меня есть страница на github для моей организации, где я хотел бы вызывать данные из стороннего API, где мне нужен токен аутентификации. Могу ли я опубликовать эту страницу на github без отображения токена авторизации в общедоступном репо?
скрыть ключ API для страницы Github
Ответы (4)
Короче нет. Если ваше репозиторий GitHub является общедоступным, все его активы являются общедоступными. Вы можете сделать репозиторий закрытым, и он по-прежнему будет публиковаться на страницах GitHub, если он назван в соответствии с соглашением username.github.io
или если у него есть ветка gh-pages
. Хотя это вариант, это не обязательно правильно.
Если ваш ключ находится в репозитории GitHub Pages, похоже, он используется для вызовов API на стороне клиента в JavaScript. Если это так, ваш токен аутентификации является общедоступным, независимо от того, находится ли он в вашем общедоступном репо или отправлен в ваших клиентских файлах в браузер. Обычно это нормально. Сторонний API мог сгенерировать токен аутентификации на основе домена вашего веб-сайта и ограничить вызовы с использованием этого токена на страницы, происходящие из вашего домена. В противном случае им может потребоваться токен аутентификации только для регистрации запросов и мониторинга использования.
Если токен аутентификации действительно должен быть частным, вам может потребоваться написать частный серверный код для вызова стороннего API. После этого ваш сайт GitHub Pages может попасть в ваш сервис за необходимыми данными. Мне приходилось делать это раньше, когда у веб-API были проблемы с безопасностью, но мне все еще нужно было получать неконфиденциальные данные со стороны клиента.
Короче говоря, да, вы можете сохранить токен аутентификации в переменной среды и использовать 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
AUTH_TOKEN
не будет по-прежнему отображаться как часть запроса, который можно просмотреть на вкладке «Сеть» в инструментах разработчика браузера? Похоже, это не решает фундаментальную проблему, связанную с вызовом непосредственно из клиентского кода.
- person A N; 25.11.2020
AUTH_TOKEN
не будет отображаться, поскольку он будет храниться в переменной окружения. Вы также добавляете файл .env в свой файл .gitignore, который скрывает его из истории коммитов.
- person Webalation; 25.11.2020
Ответ Ashen не сработает для этого варианта использования. Секреты, настроенные через Github, доступны только для действий Github (см. документацию), и из-за этого - на практике - в основном для CI / CD-подобных приложений. Не для, например, вызовы клиентского API.
GitHub Actions должны облегчить вашу задачу.
Вы можете добавлять секреты с помощью визуального редактора рабочего процесса или настроек репозитория. После создания секрета GitHub немедленно шифрует значение, и вы больше не можете просматривать или редактировать значение. Любой, у кого есть доступ на запись в репозиторий, может создавать и использовать секреты в этом репозитории.
Однако GitHub Actions в настоящее время доступны в общедоступной бета-версии, поэтому их следует избегать для важных рабочих процессов и контента в течение этого периода бета-тестирования.