临时存储密码的最安全方法



我有以下用例:

我的 Web 应用程序用于创建处方。当我将处方创建请求发送到政府 API 时,它会使用当前用户的证书进行签名。证书存储在应用程序服务器上,并使用只有用户知道的密码进行加密。 用户希望能够将其密码临时存储在"我的应用"中,这样他们就不需要为他们创建的每个处方粘贴密码。

存储此密码的最安全方法是什么?几个想法:

  1. 浏览器中的本地存储。

    不好,因为有权访问用户设备的任何人都可以看到 密码,即使他们未登录。此外,如果应用程序未运行,如果所需的存储时间到期,我将无法清除密码。

  2. 前端应用内存。

    不好,因为如果用户刷新页面或打开另一个选项卡,则存储的密码将消失。

  3. 后端,在数据库中

    这听起来像是最好的选择,因为我可以加密密码。甚至值得加密吗?我必须使用存储在同一台计算机上的一些密钥对其进行加密,因此如果有人可以访问这台机器,加密并不重要,因为他们可以轻松解密它。

分隔密码加密密钥和加密密码:

  1. 生成并存储随机密钥(和随机数/盐(
  2. 加密密码(例如AES-256-GCM( 与随机键
  3. 将加密的密码存储在后端
  4. 发送随机密钥并请求临时解密密码
  5. 会话过期时删除后端的加密密码

那边:

  • 存储在浏览器中的随机密钥只能在当前用户会话中使用,并且本身毫无用处
  • 您备份的加密密码只能与存储在浏览器中的随机密钥一起使用,并且本身毫无用处

相关内容

  • 没有找到相关文章

最新更新