Существует множество онлайн-ресурсов, которые предоставляют API-интерфейсы JavaScript для доступа к своим услугам. Чтобы быть более понятным, я буду основывать свой вопрос на примере MapBox, но это хорошо относится ко многим другим службам в различных доменах.
Когда кто-то хочет использовать такой сервис в веб-приложении (например, на изображении карты из MapBox), ему обычно необходимо зарегистрироваться/зарегистрироваться и получить токен доступа для доступа к сервису.
Теперь, если бы я использовал API со стороны сервера - это не проблема: я знаю, что мой токен надежно хранится где-то на сервере и "выставляется" только при обмене данными между моим сервером и поставщиком услуг. Однако в случае JavaScript API (например, если я использую Leaflet для рендеринга карты из MapBox), у меня должен быть мой токен доступа в JavaScript, который подвергается воздействию пользовательский веб-браузер - и поэтому очень легко найти кого-то токен доступа. В моем примере простой переход на любой веб-сайт с использованием Leaflet и открытие "Dev Tools" в Firefox обнаруживает токен, который они используют, за минуту внимательного чтения их кода JavaScript.
Однако этот токен, как по мне, следует рассматривать как очень защищенные данные - использование сервиса отслеживается на основе аутентификации, которую обеспечивает этот токен. Если вы платите за услугу на основе ее использования, она становится очень критичной, но даже если вы этого не сделаете (например, если вы используете бесплатный/стартовый/неоплачиваемый план) - использование услуги ограничено, и я хотел бы быть уверен это только я, кто использует это.
Является ли мой единственный вариант прокси через мой собственный веб-сервер?
Есть ли способ обезопасить токен доступа, используемый JavaScript API для доступа к внешней службе, при условии, что JavaScript выполняется в браузере пользователя?