我即将在个人网站上发布基于eBay查找API的演示JavaScript应用程序;我想知道是否有办法阻止我的AppID被阅读和利用。 是否可以将AppID与特定域相关联?我无法在eBay开发者论坛和官方文档中找到答案。
答案 0 :(得分:3)
如果您将数据发送到客户端,客户端可以读取数据。没有办法阻止这种情况(如果JavaScript可以解码它,那么用户也可以)。为了避免这种情况,您需要在您的站点上保留数据(您的AppID),并在您的服务器上处理请求。因此JavaScript需要与您的服务器通信,然后您的服务器会将请求传递给eBay,添加AppID,然后将结果传递回JavaScript。
答案 1 :(得分:1)
似乎无法限制AppID,因为限制不能像每个站点那样工作,并且您通常只有一个AppID用于所有用途/站点。从2010年开始this comprehensive thread(引用如下),我怀疑已经发生了很大的变化。最终结果是,对于只读应用程序,例如您网站上的搜索结果,它基本无关紧要。
检查引荐来源是保护其他公共API的最佳方法。这就是Google限制其地图API密钥的方式,例如:https://developers.google.com/maps/documentation/javascript/tutorial
关于防止欺诈的唯一因素是活动监控,因为从第三方计算机调用API,可能需要跟踪滥用趋势,可能是通过比较其他网站活动的呼叫列表,或者使用JSONP通过AJAX检查浏览器的属性。例如,谷歌可以将他们的API调用与他们的Google Analytics调用交叉引用,但可能总是存在误报。
最后,如果恐惧是CSRF,那就是:How to reliably secure public JSONP requests?
如果网址再次更改,请从易趣线程中逐字引用:
每个开发者帐户都有一个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。对于Trading API,eBay进一步限制了每次通话或每时间间隔的使用。像AddItem这样的调用有更高的限制。 GetApiAccessRules将返回您的实际限制和使用情况。
Per-IP-address表示呼叫计算机的IP地址。如果您要通过多个IP地址轮换,您实际上会增加您的限制。有许多用JavaScript或Flash编写的只读“小部件”,它们在客户端浏览器中运行,因此使用客户端IP进行调用。在这种情况下,呼叫限制非常微不足道。
AppID,DevID和CertID属于开发者帐户的创建者。该创建者受API许可条款的约束。
作为密钥的所有者,您不允许对API进行任何第三方程序控制。严格来说,这意味着密钥和从这些密钥派生的任何令牌都应保密(即在您的独家控制下)。
显然,eBay没有强制执行严格的解释,因为建议客户端应用程序使用FetchToken。一个老练的用户可以轻松抓住即将到来的令牌。基于他们自己的用户ID,有人可以对令牌做什么伤害?
- 查看每日通话限额
- 创建违反许可的API应用程序
醇>有关更多的争论,请参阅此前的帖子。 (链接坏了)
一旦您的应用程序通过eBay兼容应用程序检查,您可以为每个用户请求1.5M共享或20K呼叫。
有关eBay API的更多信息,建议您their forum询问。