簡體   English   中英

如何對公共API進行速率限制?

[英]How do I rate limit a public API?

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

帳戶和API密鑰確實聽起來不錯,如果沒有別的東西阻止除了您的目標開發人員能夠訪問您的API之外的其他人。

在上次訪問特定API時記錄一個簡單的數據庫表應該相當簡單,如果在特定時間范圍內訪問過多次,則拒絕重復使用。 如果可能的話,在下次API可用於在輸出中重復使用時返回,因此開發人員可以相應地進行限制,而不必采用試錯法。

您是期望一遍又一遍地使用相同的輸入還是完全隨機? 在API准備好重用之前,如何緩存輸出並僅向開發人員提供緩存? 這種方法也很少依賴於帳戶和密鑰。

API密鑰肯定是一個很好的方法,如果最終用戶將通過第三方構建的應用程序訪問服務,則還有openAuth( http://oauth.net )。

如果您不想自己編寫速率限制/密鑰管理代碼,那么值得一看http://www.3scale.net/ ,它可以提供大量免費開箱即用的服務(以及其他內容)包括開發人員門戶,計費等)。 作為免責聲明,我在那里工作,所以我可能會有一些偏見,但我們盡量使這個變得盡可能簡單!

我應該補充說,有一個3scalePHP插件 ,您可以將其放入您的代碼中,並啟用所有速率限制等。

其他選項雖然稍微復雜一些但是以犧牲准確性為代價是使用ip地址。 顯然這更容易克服,但對於不知道IP地址是什么的普通用戶來說。 也很容易設置。

這一切都取決於應用程序的復雜性和你完成它的時間

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM