我即將發佈基於eBay在我的個人網站上查找API的演示JavaScript應用程序;我想知道是否有辦法阻止我的AppID被讀取和利用。 是否可以將AppID關聯到特定的域?我無法在eBay開發者論壇和官方文檔中找到答案。如何在基於eBay API的JavaScript應用程序中保護我的AppID?
回答
如果您發送數據到客戶端,客戶端可以讀取數據。無法防止這種情況發生(如果JavaScript可以解碼,用戶也可以解碼)。爲了避免這種情況,您需要將數據(您的AppID)保存在您的網站上,並在您的服務器上處理請求。因此,JavaScript需要與您的服務器通話,然後您的服務器會將請求傳遞給eBay,添加AppID,然後將結果傳回給JavaScript。
要回答你的問題...
這似乎並不可能限制AppIDs的限制並不在每個站點的基礎一樣,你所有的應用工作,你通常只有一個的AppID /網站。見2010年的this comprehensive thread(下面引用),我懷疑有很多變化。最終的結果是,對於只讀應用程序(如您的網站上的搜索結果)基本無關緊要。
更一般約在瀏覽器
確保JSON API調用檢查引用是確保否則公共API的最佳方式。這就是谷歌如何限制他們的API密鑰的地圖,例如:https://developers.google.com/maps/documentation/javascript/tutorial
關於唯一可以防止欺詐的是活動監視,因爲API是從第三方計算機調用的,所以必須跟蹤或者通過比較其他網站活動的調用列表,或者使用JSONP來檢查瀏覽器的AJAX屬性。例如,谷歌可以將他們的API調用與他們的谷歌分析呼叫進行交叉參考,儘管總會有誤報。
最後,如果怕是CSRF,有這樣的:How to reliably secure public JSONP requests?
從eBay的線程的情況下,該URL再次改變逐字引用:
有每個開發者帳號一個DEVID。
可能有多個AppID,但這些只能通過付費支持憑單獲得。
每個AppID可以有多個CertID。 CertID確定您的呼叫限制。
您可以爲每個AppID生成無限制令牌。每個令牌都是AppID,UserID和相關eBay用戶密碼的配對。代幣目前有效期爲18個月。他們必須再生。令牌也可以通過API或網站優先權過早「撤銷」。
對於需要令牌的API系列,您可以使用基於您自己的用戶ID的單個令牌來檢索大多數公共信息。但是,僅當您使用爲目標用戶標識生成的令牌時,私人交易詳情纔可用。有些調用實際上是從令牌派生出用戶標識。
如果多個應用程序共享相同的AppID,它們都會對日常呼叫限制做出貢獻。這就是爲什麼你可能想要請求一個單獨的AppID。
https://www.x.com/developers/ebay/ebay-api-call-limits
在圖表中示出的限制是對於給定的API家庭「骨料」。有一個隱含的每個AppID。對於交易API,易趣進一步限制每次通話或按時間間隔使用。像AddItem這樣的一些調用有更高的限制。 GetApiAccessRules將返回您的實際限制和使用情況。
每IP地址表示主叫機器的IP地址。如果你要通過多個IP地址輪換,你實際上會增加你的限制。在客戶端瀏覽器中運行的JavaScript或Flash中有許多隻讀的「小部件」,因此使用客戶端IP來撥打電話。在這種情況下,呼叫限制非常微不足道。
AppID,DevID和CertID屬於開發者帳戶的創建者。該創建者受API許可條款的約束。
作爲密鑰的所有者,您不允許任何第三方編程控制API。嚴格來說,這意味着密鑰和從這些密鑰派生的任何令牌都應該保持私有狀態(即在您的獨佔控制下)。
顯然,eBay並未強制執行這種嚴格的解釋,因爲FetchToken建議用於客戶端應用程序。一個複雜的用戶可以輕鬆地獲取令牌的來歷或去向。某人根據他們自己的UserID使用令牌可以造成什麼危害?
- 燒透你的日常通話限制
- 創建違反許可
更多辯論的API應用程序,看到這個早些時候線程。 (鏈接被破壞)
一旦您的應用程序通過易趣兼容應用程序檢查,您可以請求每個用戶1.5M共享或20K電話。
有關易趣的API的更多信息,我建議詢問their forum。
- 1. 如何保護JavaScript應用程序的API調用?
- 2. 如何爲我的應用程序保護在線API?
- 3. 如何保護基於Rest的API?
- 4. 我應該如何保護我的Facebook AppId?
- 5. 我如何保護我的應用程序,並保護我的Sqlite數據庫在應用程序
- 6. 如何在javascript中創建密碼保護的應用程序?
- 7. 保護我的PHP應用程序
- 8. google +如何保護ios應用程序中嵌入的api-key?
- 9. 如何在AJAX應用程序中保護私有REST API
- 10. 用於基於Javascript的移動應用程序的Inmobi API
- 11. 保護我的應用程序
- 12. 如何在Adobe AIR應用程序中保護javascript資源?
- 13. 保護基於AJAX的Web應用程序
- 14. 保護我的小應用程序
- 15. Sinatra應用程序中的XSS保護
- 16. 如何保護允許用戶插入JavaScript的應用程序?
- 17. 如何在VPS上保護我的應用程序?
- 18. 如何保護移動應用程序的REST API?
- 19. 保護基於設備的PHP API
- 20. 保護Web API基於角色的
- 21. 基於Google SpreadSheet API的應用程序
- 22. 如何保護我的HTML Metro應用程序的源代碼?
- 23. 如何保護我的C#應用程序的更新?
- 24. 如何保護我的應用程序聯繫人,如Facebook
- 25. 保護JavaScript API
- 26. 如何使用USB密鑰來保護我的應用程序?
- 27. 保護JSF應用程序
- 28. 保護使用的應用程序的API使用Twitter登錄
- 29. 如何開始使用OAuth來保護Web API應用程序?
- 30. 如何在開源的Electron應用程序中保護YouTube API密鑰?
謝謝你的回答,Rob。 是的,我最終將烹飪服務器端PHP腳本來檢索數據。我想知道爲什麼eBay沒有實施任何安全措施:例如,Etsy JavaScript API控制面板允許開發人員根據每個域設置訪問限制。 – 2012-04-01 12:34:50
我對Etsy界面並不熟悉。你能解釋一下嗎?我不知道你在這裏的「域名」是什麼意思。 AuthDomain? IP塊?當用戶獲得API密鑰時,這實際上如何工作? – 2012-04-01 12:53:36
Etsy確實對推薦地址進行了檢查;如果它與控制面板中指定的域不匹配,則不返回任何數據。即使它當然不是100%可靠的安全措施,但它至少允許開發人員對可能利用JavaScript例程(使用可讀的AppID)進行最小限制。 – 2012-04-01 13:31:33