2012-03-10 93 views

回答

2

您可以爲每個碰到您網站的人自動啓動會話。然後在會話變量中存儲登錄嘗試次數,如果它們被阻止,那麼它們將被解鎖。

處理登錄時,如果密碼和用戶名不匹配,並且時間限制尚未過期並且超過了嘗試次數,則向用戶顯示消息。

你的數據庫表看起來是這樣的:

sessions 
========== 
id 
num_tries //Number of login attemps 
block_expires //If they are blocked, when they can be unblocked. 

這種方法假設用戶將承擔會話cookie。他們可以通過清除cookie來輕鬆解決這個問題。

爲了減輕些什麼,你可以建立一些智慧到過程:

  • 如果登錄名來自同一個IP地址,他們試圖訪問不改變帳戶來了,然後阻止帳戶(不是會話!)一段時間。
+4

我強烈建議不要這樣做,如果攻擊者禁用會話怎麼辦? – 2014-04-07 10:09:57

0

這是討論here

共識是您可以爲每個失敗嘗試創建一個SQL表以及時間戳。然後,您將在失敗的登錄中查詢該數據,並使用cookie或每次查詢檢查嘗試次數和時間戳。