我有一個登錄系統需要用戶名和密碼。我想在一定數量的失敗登錄嘗試後顯示驗證碼。什麼是實施這個的正確方法?我在這個網站上閱讀過,有些解決方案建議在users表中添加一個'failed-attempts-count'。但是,我需要失敗的嘗試不被綁定到某個用戶 - 即我希望顯示驗證碼,而不管輸入的用戶名是否存在於系統中。將這個存儲在一個會話變量是好的(我正在使用PHP)?如果是這樣,那麼根據需要向會話變量中引入數據是否沒有缺點?我已經有網站上的每個訪問者的任何會話ID(無論是否登錄),所以我可以創建一個表,將登錄嘗試與此會話ID相關聯......有關最佳/最安全方法的任何想法?謝謝。限制登錄嘗試,無論用戶?
更新:從答案迄今爲止,它看起來像會話ID是不是最好的辦法,因爲黑客可以簡單地明確他/她的緩存(但是這是一個真正的問題,因爲難道不這樣減慢蠻力攻擊足以使其無用?)。另一種選擇是通過IP ......但我對內部網或代理下的用戶猶豫不決,因爲失敗的嘗試將被共享......我無法真正想到任何其他方法..你能嗎?
沒錯,但我認爲首先考慮驗證碼的想法是阻止自動化的暴力攻擊..所以在每次嘗試解決問題後都不會關閉瀏覽器或清除緩存? – oym 2009-07-31 09:24:23