【问题标题】:How secure is local storage of browser?浏览器的本地存储有多安全?
【发布时间】:2016-04-05 06:41:42
【问题描述】:
      `$(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 = '';
            }
        });
    });

我已经使用本地存储来实现登录页面上的“记住我”功能,但我怀疑它的安全性。我将密码存储在本地存储中,但我想使用更好的选项。加密无济于事,因为我必须在客户端发送解密脚本。有没有替代品??

【问题讨论】:

  • 您担心哪种安全性 - 您在本地存储中存储了什么?
  • localStorage .. 使用它 - 不要滥用它.. 它存储在用户的网络浏览器中,对于您的目的来说非常不安全。例如,它可以很好地为用户维护界面的状态。您应该寻求一个后端解决方案,大概是基于令牌的身份验证。
  • @urbz 。我需要在从登录页面重定向到获取密码的任何地方进行 ajax 调用。

标签: javascript java jquery


【解决方案1】:

不要存储密码。在服务器端进行哈希加密并在浏览器上存储一个 cookie(本地存储或其他),如果您通过 https 提供它会更好。始终做加密/解密服务器端。

您可以在此 stackoverflow 答案中看到有关如何安全地执行此操作并遵循最佳实践的精彩说明:

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

The definitive guide to form-based website authentication

无论在哪里显示 cookie,您都可以放置 localstorage

【讨论】:

    【解决方案2】:

    永远不要在本地存储中存储密码。

    1. 进行身份验证,
    2. 创建会话密钥并将此密钥存储在 SQL 中,
    3. 在用户存储中保存会话密钥,
    4. 通过会话密钥恢复会话,
    5. 如果用户重新登录,创建一个新的会话密钥。

    【讨论】:

      猜你喜欢
      • 2014-02-05
      • 1970-01-01
      • 1970-01-01
      • 2021-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-30
      相关资源
      最近更新 更多