Как скрыть ключ API в Javascript на стороне клиента

Сейчас я пишу клиентское JavaScript-приложение, которое отправляет запрос в API калькулятора цен USPS. Для того, чтобы сделать этот запрос, мне нужно предоставить свой идентификатор пользователя API в xml запроса. Тег выглядит так:<RateV4Request USERID="ThisIsWhereMyUserIdGoes">, У меня такой вопрос: могу ли я предоставить свой идентификатор пользователя в javascript, но при этом скрыть его от пользователей, которые просматривают клиентские файлы. Прямо сейчас, единственное решение, которое у меня есть, - это создать файл PHP на моем сервере с идентификатором пользователя, а затем с помощью AJAX-запроса в клиентском JavaScript для сохранения его в глобальной переменной. Это выглядит так:

var userID;
$.get("/secrets.php", function( data ) { 
       userID = data;
});

Является ли это адекватным способом не допустить, чтобы мой идентификатор пользователя API был виден пользователям моего приложения? Что еще я мог сделать?

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

Решение Вопроса

нет, вы не можете защитить свой ключ API в клиентском приложении.

Эта статья более подробно

Два варианта

Сделайте API-вызовы на стороне сервера и затем предоставьте клиенту информацию оттудаТребовать от клиента использования своих собственных ключей API
 Scott Chu11 янв. 2018 г., 05:07
Как сделать 2-й вариант? Может кто-нибудь описать это более подробно? Как клиент передает свой собственный ключ API к вызываемой стороне сервера, чтобы сервер мог проверить ключ API?

ователя. Его можно легко распечатать в консоли браузера, открывconsle.log(userId);, Насколько я знаю, все, что доступно на стороне клиента, уязвимо и может быть легко декодировано. Даже если вы запутаете свой ключ API, его все равно можно будет декодировать на стороне клиента.

Нужно создать оболочку PHP вокруг вызовов API, для которых требуются ключи, а затем вызвать эту оболочку из Javascript.

 shivgre11 янв. 2018 г., 05:29
Нет, просто используйте API-ключ только на стороне сервера
 Scott Chu11 янв. 2018 г., 05:08
Несмотря на это, клиент все еще должен передать ключ API на стороне сервера, верно? Тогда ключ API все еще необходимо вставить где-нибудь в коде Javascript в источнике веб-страницы, верно? У меня есть неправильное представление здесь?

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