2017-02-17 164 views
3

我們是小型啓動,我們在後端使用SailsJS(位於NodeJS之上)。我們是一個API驅動的體系結構。我想爲大多數API實現速率限制。我想從一個小的註冊用例開始。註冊是一個公共API,目前任何人都可以訪問它來創建帳戶。速率限制註冊API

  1. 我的問題是如何通過限制這個公共API來防止DoS攻擊?
  2. 可以說我根據IP地址限制了這個API。那麼如果一些用戶在同一個組織中就會出現問題。他們可以有相同的IP地址。那麼,我們如何確保他們的速度限制得當呢?

我真的很感謝你的建議和意見。

+0

謝謝您指出。我編輯了我的問題。 – Ashish

+0

關於整個網絡的速率限制寫了大量的文章。有多個用於限速的NPM模塊以及針對該主題撰寫的許多文章和論文。看來你應該做自己的研究,然後在你從已經寫完和已經實施的東西中學到了更多具體的問題後再回來。 – jfriend00

+1

註冊需要是一個程序化API還是需要通過網頁?如果可能需要通過網頁,則可以使用驗證碼或其他「證明你是人類」機制來專門進行註冊操作。其他API請求將需要限速器。 – jfriend00

回答

2

如果註冊並不一定是純粹的程序化API,並且可能需要通過網頁,那麼您可以使用驗證碼或其他「證明您是人類」機制來註冊操作。這將防止註冊API上的編程DoS,因爲每個請求都需要人工干預。

其他API請求將需要限制速度以防止濫用已創建的帳戶。這些隨後的API調用可能會引用特定的帳戶,因此您可以通過限制帳戶的速率來處理共享的公司IP地址,而不是IP地址。

+0

在註冊方面,我在前端有captcha,但我也在代碼的其他部分以編程方式調用它。 因此,通過用戶界面註冊並通過程序訪問用戶創建發送某種令牌的驗證碼會是一個好主意嗎? – Ashish

+1

@Ashish - 如果您打算要求驗證碼,那麼您應該向公衆提供的唯一註冊API是通過驗證碼(基本上是使用驗證碼的表單帖子)的驗證碼。如果您要求使用驗證碼,您也不能擁有另一個非驗證碼的面向公衆的註冊API。你可以在內部擁有這些資源,但不向公衆開放。 – jfriend00

+0

@Ashish - 這是否回答你的問題?如果是這樣,請通過點擊答案左側的綠色複選標記來向社區表明。這也將贏得你的一些聲望點。 – jfriend00