2016-04-05 73 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. 如果用户重新登录,创建一个新的会话密钥。