Ajax для API без предоставления ключа - PullRequest
0 голосов
/ 16 февраля 2012

Я почти уверен, что ответ на этот вопрос - НЕТ, но, возможно, кто-то может дать мне другую идею, поэтому я все равно спрашиваю.

Я разрабатываю панель управления, которая извлекает информацию из стороннего веб-сервиса через вызов API. Я мог бы сделать вызов с AJAX, который возвращает результат в миллисекундах в браузере, но я бы раскрыл ключ API этого сервиса. Несмотря на то, что это интрасеть с ограниченным доступом, сотрудник может понюхать и получить закрытый ключ API, наблюдая, например, только окно активности Safari. Сотрудники заслуживают доверия, но я не хочу рисковать безопасностью своего развития, просто доверяя.

То, что я сейчас делаю, - это AJAXing php, который делает вызов с помощью вызова CURL, но для этого требуется около 2-3 секунд: не сам php, а общий хостинг, идущий на сторонний сервер и обратно.

Есть ли способ заставить браузер выполнять запрос непосредственно к API, не раскрывая закрытый ключ? Я думаю, что по определению это невозможно, но я делюсь сценарием, так что, возможно, у кого-то есть идея получше (я пытаюсь избежать кэша, потому что извлекаемая информация изменяется с точностью до секунды)

Не проблема, у меня есть сомнения, связанные с этим: если я делаю вызов API через CURL на Mac OS Terminal или в локальном Apache, то для получения результата требуется 12 секунд каждый раз, но браузер точно такой же компьютер и связь получают его за миллисекунды. Я не очень хорошо знаю, как CURL работает внутри, но либо CURL - это медленный механизм, либо он плохо работает на моем Mac.

Спасибо

Ответы [ 2 ]

1 голос
/ 16 февраля 2012

Нет, поскольку код javascript отправляется на клиентский компьютер и запускается на нем, невозможно каким-либо образом НЕ выставлять ключ API. Шифрование / запутывание этого было бы бессмысленным, поскольку хорошо осведомленный пользователь мог бы просто использовать средство просмотра заголовка / анализатор пакетов, чтобы в любом случае извлечь ключ открытого текста из запросов API.

Единственный способ не раскрывать ключ пользователю - не позволить пользователю когда-либо его заполучить, что означает проксирование запросов.

1 голос
/ 16 февраля 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...