2011-02-03 40 views
4

我有一個接收輸入並提供輸出的算法,我希望開發人員可以像使用API​​那樣使用輸出。爲了防止拒絕服務攻擊和過度使用,我想要一些速率限制或保護。我有什麼選擇?我是否提供帳戶和API密鑰?這通常如何工作?還有什麼其他想法可以用於這種情況?我如何評價一個公共API的限制?

+0

你想提供一個解壓縮的API?這真的有意義嗎?我希望現在大多數PHP安裝都是在本地安裝的,不是嗎? – 2011-02-03 22:20:48

回答

4

帳戶和API密鑰確實聽起來像是一個好主意,如果沒有別的東西,它會阻止除了您想要的開發人員能夠訪問您的API之外的其他人。

在最後一次訪問某個特定的API時有一個簡單的數據庫表記錄日誌應該相當簡單,並且如果在特定的時間範圍內訪問次數過多,則拒絕重用。如果可能的話,下一次可以在輸出中重新使用API​​時返回,這樣開發人員可以相應地進行調整,而不必採取試驗和錯誤的方法。

您是否期待相同的輸入被反覆使用或完全隨機?在API準備好重新使用之前,緩存輸出並僅向開發人員提供緩存?這種方法對賬戶和密鑰的依賴性要小得多。

1

其他一些稍微不太複雜的選項是以犧牲準確性爲代價的,那就是使用ip地址。顯然這更容易克服,但對於不知道ip地址是什麼的普通用戶來說,它是可行的。也很容易設置。

這一切都取決於應用程序的複雜性和時間,你必須這樣做在

3

API密鑰可以肯定是一個很好的路要走量,也有openAuth(http://oauth.net)如果場景中最終用戶將通過第三方構建的應用程序訪問該服務。

如果您不想自己編寫費率限制/密鑰管理,那麼值得看看http://www.3scale.net/,它可以作爲一項服務提供許多免費的開箱即用功能(另外還包括開發人員門戶,計費等)。作爲免責聲明,我在那裏工作,所以我可能會有一些偏見,但我們儘可能簡單地儘量做到這一點!

我要補充,有一個PHP plugin for 3scale,你可以拖放到你的代碼,並且將啓用所有速率限制等

相關問題