我有一個接收輸入並提供輸出的算法,我希望開發人員可以像使用API那樣使用輸出。爲了防止拒絕服務攻擊和過度使用,我想要一些速率限制或保護。我有什麼選擇?我是否提供帳戶和API密鑰?這通常如何工作?還有什麼其他想法可以用於這種情況?我如何評價一個公共API的限制?
4
A
回答
4
帳戶和API密鑰確實聽起來像是一個好主意,如果沒有別的東西,它會阻止除了您想要的開發人員能夠訪問您的API之外的其他人。
在最後一次訪問某個特定的API時有一個簡單的數據庫表記錄日誌應該相當簡單,並且如果在特定的時間範圍內訪問次數過多,則拒絕重用。如果可能的話,下一次可以在輸出中重新使用API時返回,這樣開發人員可以相應地進行調整,而不必採取試驗和錯誤的方法。
您是否期待相同的輸入被反覆使用或完全隨機?在API準備好重新使用之前,緩存輸出並僅向開發人員提供緩存?這種方法對賬戶和密鑰的依賴性要小得多。
1
其他一些稍微不太複雜的選項是以犧牲準確性爲代價的,那就是使用ip地址。顯然這更容易克服,但對於不知道ip地址是什麼的普通用戶來說,它是可行的。也很容易設置。
這一切都取決於應用程序的複雜性和時間,你必須這樣做在
3
API密鑰可以肯定是一個很好的路要走量,也有openAuth(http://oauth.net)如果場景中最終用戶將通過第三方構建的應用程序訪問該服務。
如果您不想自己編寫費率限制/密鑰管理,那麼值得看看http://www.3scale.net/,它可以作爲一項服務提供許多免費的開箱即用功能(另外還包括開發人員門戶,計費等)。作爲免責聲明,我在那裏工作,所以我可能會有一些偏見,但我們儘可能簡單地儘量做到這一點!
我要補充,有一個PHP plugin for 3scale,你可以拖放到你的代碼,並且將啓用所有速率限制等
相關問題
- 1. PHP - 如何評價一個API的限制?
- 2. 限制訪問公共API
- 3. 我如何評價限制git-svn?
- 4. 如何評價我的Google Drive API調用限制?
- 5. 我有一個NSString的公式...如何評價它
- 6. 如何限制用戶只有一個評論和評價每個項目?
- 7. 製作一個servlet「公共」?
- 8. Java - 類公共API上的界限
- 9. Foursquare API限制重置價格限制
- 10. 如何使用公共API?
- 11. facebook graphs api - 如何從公共頁面訪問評論
- 12. 限制對特定REST API端點的公共訪問
- 13. Instagram api在大型公共應用程序中的限制
- 14. 公共頁面的Facebook圖形API調用限制股數
- 15. 我將如何評估某個公式?
- 16. 獲取的Facebook公共頁面的評價和審查
- 17. 如何評價來自遠程主機的限制mysqldump?
- 18. 如何創建一個谷歌項目的公共API密鑰
- 19. 關於航班價格的公共API的任何建議
- 20. Kickstarter有一個公共API嗎?
- 21. 什麼是AWS公共IP限制? (公共IP不彈性IP)
- 22. 我如何能夠創建一個新的公共休息api頂級類
- 23. 限制公共API網關到特定IP
- 24. Facebook公共可用API是否有限制?
- 25. Facebook的/我/權限是一個未公開的Graph API調用?
- 26. 如何限制選擇只有具有共同價值的行?
- 27. 如何評價數組公式與評估方法
- 28. 如何限制我的AWS賬戶中的用戶訪問公共AMI
- 29. Github:如何限制對公共存儲庫的提交
- 30. 如何限制引用庫中的公共訪問修飾符?
你想提供一個解壓縮的API?這真的有意義嗎?我希望現在大多數PHP安裝都是在本地安裝的,不是嗎? – 2011-02-03 22:20:48