gun.user.recall()将密码以纯文本格式存储在sessionStorage中,无需加密

时间:2019-06-12 12:35:36

标签: passwords session-storage gun

我想在项目中应用gun.user

当我使用user.recall(opt)将用户存储在sessionStorage中时,

This code in sea.js未加密地将密码存储在tmp中。

可以吗?或

在致电.auth之前应该对密码进行加密吗?

这是我的代码。

jq('#up').on('click', (e) => {
    let form = check();
    if(!form){ return }
    S.user.create(form.alias, form.pass, (ack) => {
        if(ack.err){ return S.tell(ack.err) }
        check.up = true;
        S.user.auth(form.alias, form.pass, logined);
    });
});

jq('#in').on('click', (e) => {
    let form = check();
    if(!form){ return }
    S.user.auth(form.alias, form.pass, logined);
});

let logined = (ack) =>{
    if(ack.err){ return S.tell(ack.err) }
    S.user.recall({sessionStorage: true});
}

+

我发现了user.create()的{​​{3}}。

  

将与PBKDF2一起扩展的密码短语,以使其成为一种安全的方法   登录。

但是,我的会话存储中有平面文本。

document

枪支版本为0.2019.515。

1 个答案:

答案 0 :(得分:0)

@huhsame,非常关注! (顺便说一下,您的Twitter上令人难以置信的GUN AR / VR演示!)

  

浏览器需要基于域的安全性,这可悲地限制了P2P安全性。

不幸的是,sessionStorage是最安全的最佳浏览器选项:

  • 不与服务器共享凭据(就像cookie一样)。
  • 它使用户保持刷新状态。
  • 如果关闭标签页,它将删除凭据

在页面加载之间,对密码进行加密是个好主意,但问题是,要使用户保持登录状态,还必须存储解密密钥。 :(

localStorage中存储凭据不安全,这就是sessionStorage更好的原因。

  

警告!除非您使用下面的浏览器扩展或浏览器采用更好的解决方案,否则XSS泄漏可能会破坏sessionStorage中的凭据-但是即使禁用它,也可以在没有扩展的情况下从内存中提取凭据以保护帐户。

PBKDF2 在登录过程中使用,而不是会话管理-同样,它也可以在登录过程中使用,但具有与上述相同的限制。

  

即使sessionStorage也不能很好地保持用户登录。

因此,您应该考虑其他解决方案。我在这里写了更多关于其他选项的信息:​​

Keeping a Gun DB user authenticated during a session

更好的安全性

要获得最佳安全性,用户可能需要安装浏览器扩展程序(例如我们的http://party.lol工具),直到浏览器本机采用这种安全性或提供更好的以用户为中心的会话管理。