我想在项目中应用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一起扩展的密码短语,以使其成为一种安全的方法 登录。
但是,我的会话存储中有平面文本。
枪支版本为0.2019.515。
答案 0 :(得分:0)
@huhsame,非常关注! (顺便说一下,您的Twitter上令人难以置信的GUN AR / VR演示!)
浏览器需要基于域的安全性,这可悲地限制了P2P安全性。
不幸的是,sessionStorage
是最安全的最佳浏览器选项:
在页面加载之间,对密码进行加密是个好主意,但问题是,要使用户保持登录状态,还必须存储解密密钥。 :(
在localStorage
中存储凭据不安全,这就是sessionStorage
更好的原因。
警告!除非您使用下面的浏览器扩展或浏览器采用更好的解决方案,否则XSS泄漏可能会破坏
sessionStorage
中的凭据-但是即使禁用它,也可以在没有扩展的情况下从内存中提取凭据以保护帐户。
PBKDF2 在登录过程中使用,而不是会话管理-同样,它也可以在登录过程中使用,但具有与上述相同的限制。
即使
sessionStorage
也不能很好地保持用户登录。
因此,您应该考虑其他解决方案。我在这里写了更多关于其他选项的信息:
Keeping a Gun DB user authenticated during a session
要获得最佳安全性,用户可能需要安装浏览器扩展程序(例如我们的http://party.lol工具),直到浏览器本机采用这种安全性或提供更好的以用户为中心的会话管理。