在会话期间保持Gun DB用户的身份验证

时间:2018-12-02 08:20:47

标签: gun gundb

我正在跟踪用于分布式/无服务器应用程序的Gun / SEA认证系统。当Gun用户通过身份验证后,此应用会将会话信息保存到本地存储中。我遇到的一个问题是刷新页面或打开新选项卡时,我想在会话有效时保持用户身份验证,由于XSS和物理安全原因,我宁愿不将用户名和密码存储在本地存储中。目前有解决此问题的方法吗?我认为sessionStorage可能会更好,但是它仍然存在一些相同的安全性问题,即将用户名和密码存储在攻击者可能能够获得的位置,以及在打开新选项卡时要求用户登录。

1 个答案:

答案 0 :(得分:1)

赠予!很高兴收到您的来信,对您的回复延迟表示抱歉(我不确定该评论的人是谁,因为这并不能真正帮助您解决问题)。

这是一个很大的问题,您已经对安全性和浏览器技术的局限性有所怀疑-老实说,它们都不是很好。让我们回顾一下:

  1. 如果您添加user.recall({sessionStorage: true}),它将尝试自动重新登录。但是,您是对的,在安全性方面存在一些折衷,但是我认为这是合理的。
  2. localStorage。我听说有人抱怨不同的浏览器对sessionStorage的处理不佳(不会保留在新标签页等),因此下一个选择是使用localStorage。但是,我确实认为这是一个实际的安全问题。
  3. SPA。单页应用程序-如果您尝试分发独立打包的“ dApps”,这将非常有用。但是,您是对的,仍然存在刷新问题。以我自己的经验,(1)足以使其成为良好的用户体验。
  4. PIN。我们社区提出的另一个想法是使用(1〜3),但将其与设备PIN码结合在一起。这意味着您可以在合理的安全假设下将其存储在localStorage中,并在刷新/恢复用户输入PIN来解密其会话。
  5. IndexedDB。事实证明,WebCrypto API确实具有导入密钥的选项,并将在IndexedDB中对其进行加密并在以后将其检索而不会传递给用户土地-至少,这就是我所听到的。但是,您仍然必须最初处理密钥,并且对IndexedDB的支持各不相同,并且您将为此编写一个GUN插件。
  6. 浏览器扩展。我最不喜欢这个,因为它需要用户安装某些东西,但是由于浏览器没有提供与之等效的某些本机功能,因此我们必须进行干预。好消息是,正在进行GUN + MetaMask集成,并且MetaMask已经安装了1M +,因此您的用户可能已经安装了它。
  7. 浏览器API。我们将与MetaMask团队及其他团队合作,以获取为此的本地API作为标准。我希望Brave将跟随MetaMask的领导,FireFox将跟随Brave,最后是Chrome。

同时,您的原始建议可能是最好的-使用(1)sessionStorage。它与MetaMask兼容/向前/向后兼容。期中希望您或社区中的其他人能够(5)工作。然后长期解决方案(6和7)将是解决方案。

就目前而言,请查看MetaMask演示:https://twitter.com/marknadal/status/1062153254283276288

相关问题