Как использовать внешние токены доступа к API, не предоставляя их пользователю?

#reactjs #access-token

#reactjs #access-token

Вопрос:

Извините, если это может быть немного тривиальным вопросом, но я хочу быть уверенным и не смог точно найти окончательный ответ в Интернете.

Я пишу небольшое приложение, которое использует Mapbox, и я использую для него react-map-gl. Им требуется токен доступа на стороне клиента, поэтому они предлагают использовать переменную среды. Мой вопрос в том, можно ли просто создать ENV-файл во внешней папке и поместить туда переменную?

Спасибо!

Комментарии:

1. да, вы можете использовать .env, просто убедитесь, что он находится в вашем gitignore, чтобы он никогда не отображался в вашем коде, в этом случае он никогда не будет доступен пользователю, просто в вашей локальной среде

2. Будет сделано, большое вам спасибо!

Ответ №1:

Вы не можете уйти от раскрытия ключей API во внешнем интерфейсе. Если кто-то захочет покопаться в вашем исходном коде, он их найдет.

Тем не менее, вы всегда должны настраивать любой ключ API, который виден в Интернете, чтобы он был ограничен конкретными ссылками, то есть доменом вашего веб-сайта.

Обычно это делается во время создания ключа API через панель инструментов вашего провайдера.

Для Mapbox вы можете прочитать документацию по ограничению токенов API здесь . В нем говорится:

Вы можете сделать свои токены доступа к веб-картам более безопасными, добавив ограничения URL. Когда вы добавляете ограничение URL к токену, этот токен будет работать только для запросов, исходящих из указанных вами URL-адресов.Токены без ограничений будут работать для запросов, исходящих с любого URL.

(выделение мое собственное)


Им требуется токен доступа на стороне клиента, поэтому они предлагают использовать переменную среды. Мой вопрос в том, можно ли просто создать env-файл во интерфейсной папке и поместить туда переменную?

Есть две причины, по которым переменные среды используются при разработке интерфейса:

  1. Для удобства, чтобы сохранить конфигурацию, зависящую от среды, удаленной из исходного кода.

  2. Чтобы сохранить конфиденциальную информацию из исходного кода. Вы не должны передавать токены API или другие аналогичные конфиденциальные данные в свой контроль версий.

Использование переменных среды во внешнем коде не позволит хранить их значения в секрете от конечного пользователя. Какое бы значение переменной среды ни было во время сборки, оно будет видно в скомпилированном выводе.