2016-09-23 55 views
0

雖然平靜api中沒有會話,但在平穩api中管理嘗試次數(例如登錄)的最佳/常用方法是什麼?管理平穩api中端點的嘗試次數

+0

根據定義,RESTful API是無狀態的,所以它不是處理需要狀態的登錄的好選擇。這就是說,記錄可疑活動並相應地阻止IP地址可能是一個好主意。 – Mike

回答

0

創建像token_storage_tbl數據庫中的表,然後添加三列:TID(INT)255 PK AI,令牌(VARCHAR)1024,times_used INT(255)

然後,您可以使用您的連接查詢和增加times_used表。

$smtp = $pdo->Prepare('UPDATE token_storage_tbl SET times_used = ? WHERE token = ?'); 
$smtp->execute(array(....)); 

要找出它被使用多少次:

$maxUse = 3; 
$smtp = $pdo->Prepare('SELECT times_used FROM token_storage_tbl WHERE token = ?'); 
if($smtp->execute(['token here'])->fetch()['times_used'] > $maxUse) { 
    // oh no... its been used too much 
} 
+0

考慮到您使用的是RESTful,您向開發人員提供了一個令牌,然後將該令牌發送到端點以檢索信息,但是您不會強行停止該令牌?如果您正在考慮這條路線,最好記錄IP失敗嘗試並監控可疑活動。即:如果IP在過去一小時內錯誤地請求了5次數據,則會變得可疑。 – KDOT

+0

仍然應該有一個令牌生成器端點,入侵者可以根據需要生成儘可能多的令牌! – HPM

+0

不是真的,因爲您使用身份驗證。除非攻擊者請求的用戶確認攻擊者請求的訪問範圍,否則攻擊者不會生成該令牌,只有這樣他們纔可以檢索令牌並將其傳遞到終點。因此,確保用戶知道風險並能夠管理誰可以在後期訪問數據(如Auth 2.0)@HPM – KDOT

0

你所問的是爲您的休息API定製的安全邏輯。它不應該成爲其餘API的一部分。其餘部分不應該實現這樣的安全邏輯,應該只做它應該做的API。

現在您可以爲自定義安全邏輯添加一個分層,您可以添加一個過濾器來維護和審覈這些調用,並且可以用於增強API的安全性。

當然,您需要堅持驗證某個客戶端的通話計數。

+0

API應該有它自己的安全邏輯。有一些端點向公衆開放,您需要限制訪問的數量。任何常見的方式來處理它? – HPM