【问题标题】:How do I securely client-side cache an encryption password in React/Next?如何在 React/Next 中安全地在客户端缓存加密密码?
【发布时间】:2021-11-08 01:32:11
【问题描述】:

我制作了一个文件加密应用程序,它需要密码来加密文件。我想缓存用户在客户端输入的密码,即使在页面更改后,这样他们每次访问加密页面时都不必继续输入密码。最好的方法是什么?

【问题讨论】:

    标签: javascript reactjs cryptography


    【解决方案1】:

    将其存储为 cookie 应该没有问题(就像来自登录的会话 cookie)。您应该在将其设置为 cookie 之前另外对其进行加密,这样如果有人被劫持,攻击者将无法访问明文密码。另外,请确保为其设置合理的过期时间。

    【讨论】:

    • 这不起作用,因为服务器会看到密码。我不想让服务器看到解密密码。
    • 如果这完全是客户端的话,真的没有任何其他选择。您仍然需要设置 cookie(或本地存储),但无法对其进行加密。从安全的角度来看,这是非常有问题的,但是像这样的客户端支持整个过程将控制权完全交到用户手中(包括保持明文密码 cookie 的安全)
    • 有像 Bitwarden 这样的应用程序似乎可以在没有本地存储或 cookie 存储密码的情况下执行此操作。你知道他们是怎么做到的吗?
    • @amazingdoodler Bitwarden 是一个浏览器插件,因此它扩展了浏览器的功能,无法使用客户端 javascript 代码完成。 (如果您想使用类似的方法,您需要创建自己的浏览器插件,用户下载该插件以使用您的网站,在本地加密他们的密码。每个用户都需要您的浏览器插件才能工作)。此外,Bitwarden 将用户密码存储在 服务器 端。用户密码在他们的机器上本地加密,然后发送到云数据库进行存储。
    • 好吧,我说的是网络保险库。它不需要扩展,并且用户的加密密码被缓存在某处,因为它不需要您再次登录,即使在页面更改后(例如从保险柜转到设置)。
    猜你喜欢
    • 2015-04-20
    • 1970-01-01
    • 1970-01-01
    • 2016-02-19
    • 1970-01-01
    • 2013-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多