2017-06-29 94 views
0

在我的應用程序中,我添加了reCaptcha,但我也想要第二種方法來防止暴力攻擊。經過一番研究後,我想在一個解決方案中,如果試圖在一秒鐘內完成,將阻止試圖登錄的用戶。例如,用戶進入頁面並放置他們的憑據,然後按回車嘗試登錄;如果這發生在一秒鐘內,我會阻止用戶,因爲這不是人爲可能的(即使他們的憑據保存在瀏覽器中)。蠻力安全 - 登錄時間

但是,那麼問題是,我正在計算頁面加載完成後JavaScript層的時間,所以這個解決方案顯然很容易被黑客攻擊。我認爲使用數據庫,但這似乎是不可靠的(由於請求)。那麼,在這種情況下我能做些什麼來實現最佳解決方案呢?

+0

我會同時使用客戶端和服務器端阻塞。客戶端例如是我禁用登錄按鈕或什麼,並提醒用戶發生了什麼事。在服務器端,它也是必需的,因爲正如你所提到的,客戶端驗證可能會被黑客入侵。在這些情況下,時間不是關鍵因素,所以在我看來,請求時間並不重要。此外,如果來自同一個ip的請求太多,可能是洪水攻擊,所以你可以在一段時間後拒絕這些請求(例如,在1分鐘內10次失敗的驗證碼) – Ursache

回答

0

這聽起來像你想「扼殺」多快的登錄嘗試。這可以通過服務器生成的某種類型的「令牌」來實現

  • 當頁面請求生成令牌時,存儲時間。
  • 將令牌發送到登錄頁面。
  • 當登錄請求返回時,請確保它具有令牌。
  • 將登錄請求的時間與令牌生成時間進行比較,如果過早拒絕以您認爲合適的方式拒絕請求。
  • 存儲每個登錄嘗試,如果它們發送得太近,拒絕它們。