2013-12-12 64 views
1

如何阻止用戶在servlet jsp程序中登錄如果他/她輸入了錯誤密碼更多
然後3次都可以請用一個例子來解釋一下嗎?
我曾嘗試用餅乾客戶端編程在HTML 5如何在servlet jsp程序中阻止用戶登錄如果他/她輸入錯誤密碼超過3次

{<script> 
    if(typeof(Storage)!=="undefined") 
    { 
    var attempt= localStorage. attempt+1; 

    document.getElementById("attempt").innerHTML="attempt" + localStorage.attempt; 
    } 
</script>} 
+1

客戶端阻塞效率相當低。您不斷糾纏那些真的可能忘記密碼並需要嘗試幾次的可憐靈魂,並將服務器打開以進行暴力/字典攻擊。由於您在檢查密碼時也始終保持客戶端/服務器通信,因此您可以直接在服務器端阻止此操作。 – Matthias

回答

0

它不是一個好辦法做到這一點在客戶端,因爲你那邊有沒有控制。您應該在服務器端(servlet/jsp)執行此操作。

您可以開始使用以下概念:

  • 您的服務器創建的會話都有一個唯一的ID session.getId()
  • 您的服務器負責對應用程序進行適當的會話管理。
  • 您可以通過在會話變量上存儲一個值來計算登錄嘗試的次數,以統計session.setAttribute()方法的計數次數,從而可以統計該會話嘗試登錄過程的次數。

結合上述概念,你可以創建自己的流程和業務邏輯

0

如果您正在使用您定義如下

<login-config> 
    <auth-method>FORM</auth-method> 
    <form-login-config> 
      <form-login-page>/login.html</form-login-page> 
      <form-error-page>/errors/retry.jsp</form-error-page> 
    </form-login-config> 
</login-config> 

形式的認證然後,你可以跟蹤嘗試的次數retry.jsp頁面。也就是說,每次用戶輸入錯誤的登錄詳細信息時,容器都會將用戶重定向到retry.jsp頁面。在這個頁面上,會話中存儲的計數器加1,直到用戶重定向到另一個頁面時的3次限制,表示不允許更多的reties。

0

HTML5 localstorage將依賴於客戶端,並且不適用於所有版本的瀏覽器。你應該在服務器上編碼這個邏輯。使用request.getSession()來獲取會話,並在每次嘗試時將retryAttempt變量加1並在會話中設置它。您需要在過濾器或servlet中檢查它。

相關問題