2015-01-09 88 views
-1

我正在爲我的CMS頁面創建一個鎖定系統。這個想法是在24小時內發生5次錯誤嘗試後超時48小時。但是,如果用戶在24小時內輸入了正確的密碼,那麼應該刪除超時帳戶。在成功嘗試和嘗試失敗後,我遇到了超時和解鎖用戶帳戶的問題。爲很多登錄嘗試失敗後計時用戶

這個想法是失敗的嘗試和超時發生後,如果他們正確輸入密碼,它取消超時。如果他們在24小時內(超時後)再次輸入錯誤密碼,則先前的錯誤嘗試將被忽略,並且僅顯示上次成功嘗試後的最新失敗嘗試。

我已經創建了一個表來存儲UNSUCCESSFUL嘗試。我需要幫助,讓代碼檢查最近5次連續失敗的嘗試次數。然後,如果用戶輸入正確的密碼(24小時內)>刪除超時。

$qry = " SELECT 
           CASE WHEN count(*) >= 5 THEN 0 ELSE 1 END as allowed_login 
          FROM 
           cms_user_login_attempts 
          WHERE 
           cula_date_time >= DATE_SUB(CURRENT_TIMESTAMP, interval 48 hour) 
          AND 
           cula_user_id = " . $db->SQLString($row->user_id) . ""; 
+1

我不確定我是否理解。如果用戶輸入錯誤密碼的次數太多,你想鎖定用戶,但如果他們輸入正確的密碼,你會讓他們回來?這種方式不是首先打破這種鎖定的目的嗎? –

+0

這是正確的,是的。它的規格我必須經過。我想改變它,但不能。 –

+0

我會認爲像這樣的安全問題將是一個很好的理由來糾正規範。 –

回答

0

忽略你不真正鎖定任何人的部分我會用不同的方法。

我場last_bad_login_timebad_login_attempts添加到您的用戶表。每當使用者輸入一個錯誤的密碼,並且在時間跨度X中沒有N次嘗試,就會增加#attempts(注意溢出,哈哈)並更新時間戳。 如果用戶正確登錄兩個字段(或只是#attempts)。

+0

你好,謝謝你,我以前有過嘗試colomn,但我的主管說他不喜歡那樣。他希望它做的只是在24小時內連續嘗試5次,如果超過5次,則計時。如果他們在24小時內嘗試了5次後輸入了正確的密碼,然後讓他們進來。他說我需要創建一個子查詢,只是有點失落,我是一個有着小編程經驗的實習生。 –

+0

不客氣。 「定時出去」到底是什麼意思? – m02ph3u5