2

I am about to publish a demo JavaScript application based on eBay finding API on my personal website; I was wondering if there is a way to prevent my AppID from being read and exploited. Is it possible to associate the AppID to a specific domain ? I haven't been able to find an answer neither on eBay Developer Forums nor in the official documentation.

4

2 回答 2

3

如果您向客户端发送数据,则客户端可以读取数据。没有办法阻止这种情况(如果 JavaScript 可以解码它,那么用户也可以)。为了避免这种情况,您需要将数据(您的 AppID)保留在您的站点上,并在您的服务器上处理请求。因此 JavaScript 需要与您的服务器对话,然后您的服务器会将请求传递给 eBay,添加 AppID,然后将结果传递回 JavaScript。

于 2012-04-01T00:57:57.293 回答
1

要回答你的问题...

似乎不可能限制 AppID,因为限制不适用于每个站点,并且您通常只有一个 AppID 用于所有用途/站点。看到这个 2010 年的综合线程(引用如下),我怀疑已经发生了很大变化。最终结果是,对于只读应用程序(例如您网站上的搜索结果)而言,它基本上无关紧要。

更一般地关于在浏览器中保护 JSON API 调用

检查引荐来源网址是保护其他公共 API 的最佳方式。这就是 Google 限制地图 API 密钥的方式,例如:https ://developers.google.com/maps/documentation/javascript/tutorial

唯一可以防止欺诈的是活动监控,鉴于 API 是从第三方计算机调用的,因此必须跟踪滥用趋势,可能通过将调用列表与其他网站活动进行比较,或者使用 JSONP使用 AJAX 检查浏览器的属性。例如,谷歌可以交叉引用他们的 API 调用和他们的谷歌分析调用,尽管总是可能存在误报。

最后,如果担心的是 CSRF,那就是:如何可靠地保护公共 JSONP 请求?

如果 URL 再次更改,请逐字引用 eBay 线程:

每个开发者帐户有一个 DevID。

可能有多个 AppID,但这些只能通过付费支持票获得。

每个 AppID 可以有多个 CertID。CertID 确定您的呼叫限制。

您可以为每个 AppID 生成无限的令牌。每个令牌都是 AppID、UserID 和关联的 eBay 用户密码的配对。代币目前的有效期为 18 个月。然后必须重新生成它们。令牌也可以通过 API 或网站首选项过早地“撤销”。

对于需要令牌的 API 系列,您可以使用基于您自己的 UserID 的单个令牌来检索大多数公共信息。但是,仅当您使用为目标 UserID 生成的令牌时,私人交易详细信息才可用。有些调用实际上是从令牌中派生出 UserID。

如果多个应用程序共享同一个 AppID,它们都将贡献于每日通话限制。这就是您可能想要请求单独的 AppID 的原因。

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

图表中显示的限制是给定 API 系列的“汇总”。有一个隐式的 per-AppID。对于交易 API,eBay 进一步限制了每次调用或每个时间间隔的使用。一些像 AddItem 这样的调用有更高的限制。GetApiAccessRules 将返回您的实际限制和使用情况。

Per-IP-address 是指调用机器的 IP 地址。如果您要轮换使用多个 IP 地址,您实际上会增加您的限制。有许多用 JavaScript 或 Flash 编写的只读“小部件”,它们在客户端浏览器中运行,因此使用客户端 IP 进行调用。在这种情况下,调用限制非常微不足道。

AppID、DevID 和 CertID 属于开发者账号的创建者。该创建者受 API 许可条款的约束。

作为密钥的所有者,您不允许对 API 进行任何第 3 方编程控制。严格来说,这意味着密钥和从这些密钥派生的任何令牌都应保持私有(即在您的排他控制下)。

显然,eBay 并没有强制执行这种严格的解释,因为 FetchToken 建议用于客户端应用程序。一个老练的用户可以很容易地抓住来或去的令牌。使用基于他们自己的 UserID 的令牌会有什么危害?

  1. 消耗您的每日通话限制
  2. 创建违反许可的 API 应用程序

有关更多辩论,请参阅此较早的帖子。(链接坏了)

一旦您的应用程序通过了 eBay 兼容应用程序检查,您就可以为每位用户请求 150 万次共享或 2 万次调用。

有关 eBay 的 API 的更多信息,我建议在他们的论坛上提问。

于 2012-06-26T16:30:12.337 回答