2016-04-05 72 views
2
 `$(function rememberMe() { 

     if (localStorage.chkbx && localStorage.chkbx != '') { 
      $('#remember-me').attr('checked', 'checked'); 
      $('#user').val(localStorage.usrname); 
      $('#pass').val(localStorage.pass); 
     } else { 
      $('#remember-me').removeAttr('checked'); 
      $('#user').val(''); 
      $('#pass').val(''); 
     } 

     $('#remember-me').click(function() { 

      if ($('#remember-me').is(':checked')) { 
       localStorage.usrname = $('#user').val(); 
       localStorage.pass = $('#pass').val(); 
       localStorage.chkbx = $('#remember-me').val(); 
      } else { 
       localStorage.usrname = ''; 
       localStorage.pass = ''; 
       localStorage.chkbx = ''; 
      } 
     }); 
    }); 

我已經使用本地存儲在登錄頁面上實現「記住我」功能,但我懷疑它是多麼安全。我在本地存儲密碼,但我想使用更好的選項。加密不會幫助,因爲我必須發送腳本解密在客戶端。有沒有其他選擇?瀏覽器本地存儲的安全性如何?

+0

您擔心什麼樣的安全性?您在本地存儲中存儲什麼? –

+3

'localStorage' .. _使用它 - 不要濫用它.._它存儲在用戶的Web瀏覽器中,並且對於您的目的而言是非常不安全的。它可以很好地工作,例如維護用戶界面的狀態。你應該去推出一個後端解決方案,大概是一個基於令牌的認證。 – urbz

+0

@urbz。無論從登錄頁面重定向到獲取密碼,我都需要提供ajax調用。 – Pranesh

回答

5

不要存儲密碼。在服務器端進行散列加密,並在瀏覽器上存儲cookie(本地存儲或其他),如果通過https服務,則更好。始終執行加密/解密服務器端。

你可以看到如何安全,並按照這個計算器的答案的最佳實踐做一個很好的解釋:

What is the best way to implement "remember me" for a website?

The definitive guide to form-based website authentication

無論它說:餅乾你可以把的localStorage改爲

2

切勿在本地存儲器中存儲密碼。

  1. 做一個認證,
  2. 創建會話密鑰存儲在SQL此鍵,
  3. 用戶存儲保存會話密鑰,
  4. 恢復基於會話密鑰的會話,
  5. 如果用戶重新登錄,創建一個新的會話密鑰。