eBay API - защита AppID в приложении JavaScript - PullRequest
2 голосов
/ 01 апреля 2012

Я собираюсь опубликовать демонстрационное приложение JavaScript на основе eBay find API на моем личном веб-сайте;Мне было интересно, есть ли способ предотвратить чтение и использование моего AppID.Можно ли связать AppID с конкретным доменом?Я не смог найти ответ ни на форумах разработчиков eBay, ни в официальной документации.

Ответы [ 2 ]

3 голосов
/ 01 апреля 2012

Если вы отправляете данные клиенту, клиент может прочитать данные. Нет способа предотвратить это (если JavaScript может его декодировать, то же самое может сделать и пользователь). Чтобы избежать этого, вам нужно сохранить данные (ваш AppID) на вашем сайте и обработать запрос на вашем сервере. Поэтому JavaScript должен связаться с вашим сервером, и ваш сервер затем передаст запрос eBay, добавив AppID, а затем передаст результаты обратно в JavaScript.

1 голос
/ 26 июня 2012

Чтобы ответить на ваш вопрос ...

Кажется невозможным ограничить AppID, так как ограничения не работают для каждого отдельного сайта, и у вас обычно есть только один AppID для всех ваших применений / сайтов. См. эту всеобъемлющую ветку от 2010 года (цитируется ниже), я сомневаюсь, что многое изменилось. Конечным результатом является то, что для приложения, предназначенного только для чтения, такого как результаты поиска на вашем веб-сайте, это не имеет значения.

В целом о защите вызовов JSON API в браузере

Проверка реферера - лучший способ обезопасить общедоступный API. Вот как Google ограничивает свои ключи API для карт, например: https://developers.google.com/maps/documentation/javascript/tutorial

Единственное, что может предотвратить мошенничество, - это мониторинг активности, учитывая, что API вызывается со сторонних компьютеров, необходимо отслеживать тенденции злоупотреблений, например, сравнивая список вызовов с другими действиями на веб-сайте или используя JSONP для проверки свойств браузера с помощью AJAX. Например, Google может связывать их вызовы API со своими вызовами Google Analytics, хотя всегда могут быть ложные срабатывания.

В конце концов, если страх - это CSRF, вот что: Как надежно защитить публичные запросы JSONP?

Дословное цитирование из цепочки eBay в случае повторного изменения URL:

Существует один DevID для каждой учетной записи разработчика.

Может быть несколько идентификаторов AppID, но они доступны только через платный билет поддержки.

Каждый AppID может иметь несколько CertID. CertID определяет пределы вашего звонка.

Вы можете создавать неограниченное количество токенов для каждого AppID. Каждый токен представляет собой пару AppID, UserID и соответствующего пароля пользователя eBay. Токены в настоящее время активны в течение 18 месяцев. Затем они должны быть восстановлены. Токены также могут быть преждевременно аннулированы либо через API, либо через настройки сайта.

Для семейств API, для которых требуется токен, вы можете использовать один токен на основе своего собственного идентификатора пользователя для получения большей части общедоступной информации. Однако подробные данные о частной транзакции доступны только при использовании токена, созданного для целевого идентификатора пользователя. Некоторые вызовы фактически получают идентификатор пользователя из токена.

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

https://www.x.com/developers/ebay/ebay-api-call-limits

Ограничения, показанные на диаграмме, являются «совокупными» для данного семейства API. Существует неявный per-AppID. Для Торгового API eBay дополнительно ограничивает использование для каждого вызова или для каждого временного интервала. Некоторые вызовы, такие как AddItem, имеют более высокие ограничения. GetApiAccessRules вернет ваши фактические ограничения и использование.

Per-IP-адрес означает IP-адрес вызывающего устройства. Если бы вы вращались через несколько IP-адресов, вы бы умножили свой лимит. Есть много «виджетов», доступных только для чтения, написанных на JavaScript или Flash, которые запускаются в клиентском браузере и, таким образом, используют клиентский IP для выполнения вызовов. В этом случае лимит вызовов довольно незначителен.

AppID, DevID и CertID принадлежат создателю учетной записи разработчика. Этот создатель связан положениями лицензии API.

Как владелец ключей вы не должны разрешать сторонний программный контроль API. Строго говоря, это означает, что и ключи, и любой токен, полученный из этих ключей, должны оставаться закрытыми (т.е. под вашим исключительным контролем).

Очевидно, что eBay не применяет эту строгую интерпретацию, поскольку FetchToken предлагается для клиентских приложений. Опытный пользователь может легко получить токен, приходящий или уходящий. Какой вред может кто-то сделать с токеном, основанным на их собственном UserID?

  1. Прожиг свой дневной лимит вызовов
  2. Создание приложения API, нарушающего лицензию

Подробнее о дискуссиях см. В этой предыдущей теме. (Ссылка не работает)

После того, как ваше приложение пройдет проверку на совместимость с eBay, вы можете запросить 1,5 млн общих или 20 000 вызовов на пользователя.

Для получения дополнительной информации об API eBay, я предлагаю задать ихфорум .

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