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

时间:2020-01-07 12:24:55

标签: security web encryption passwords

我有以下用例:

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

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

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

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

  2. 前端应用程序内存。

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

  3. 后端,在数据库中

    这听起来是最好的选择,因为我可以加密密码。甚至值得加密吗?我将不得不使用存储在同一台计算机上的某些密钥对它进行加密,因此,如果有人可以访问此计算机,则加密就没有关系了,因为他们将能够很轻松地对其进行解密。

1 个答案:

答案 0 :(得分:0)

分开密码加密密钥和加密的密码:

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

那样:

  • 存储在浏览器中的随机密钥只能在当前用户会话中使用,并且不能单独使用
  • 支持的加密密码只能与存储在浏览器中的随机密钥一起使用,并且不能单独使用
相关问题