Как обезопасить токен доступа JavaScript API?

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

Когда кто-то хочет использовать такой сервис в веб-приложении (например, на изображении карты из MapBox), ему обычно необходимо зарегистрироваться / зарегистрироваться и получитьтокен доступа для доступа к услуге.

Теперь, если бы я использовал API со стороны сервера - это не проблема: я знаю, что мой токен надежно хранится где-то на сервере и «выставляется» только при обмене данными между моим сервером и поставщиком услуг. Тем не менее, в случае JavaScript API (например, если я используюлистовка для рендеринга карты из MapBox), я должен иметьмой токен доступа в JavaScript, который предоставляется веб-браузеру пользователя - и поэтому очень легко найти чей-то токен доступа. В моем примере простой переход на любой веб-сайт с использованием Leaflet и открытие «Dev Tools» в Firefox обнаруживает токен, который они используют, за минуту внимательного чтения их кода JavaScript.

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

Ясно, что существуют стратегии, такие как фильтрация IP / доменов, например, по поставщику услуг, но, похоже, не все поставщики услуг поддерживают это - например, MapBox, похоже, не (или я не нашел его). Или, в конечном счете, я могу прокси-службу через мой веб-сервер, но это очень тяжело.

Учитывая все это - есть ли способ защитить токен доступа, используемый JavaScript API для доступа к внешней службе, при условии, что JavaScript выполняется в браузере пользователя?

Ответы на вопрос(4)

Ваш ответ на вопрос