如何将密码安全地存储在本地存储中

How to securely store password in local storage

我知道 Stack Overflow 上还有其他帖子在问类似的问题,答案是不要将密码存储在本地存储中,但我需要这样做。如果有更好的方法,请告诉我。

我正在构建一个密码管理器。我正在尝试将其开发为主要离线工作。它的工作方式是用户将他们的“保险库”存储在我的 golang 网络服务器上。只有在客户端或服务器需要更新时才会访问服务器。因此:用户登录,保险库从网络服务器发送到客户端,每次创建密码条目(用户名、密码、名称等)时,条目的每个方面都使用用户的“主密码”加密。由于我希望 webapp 能够脱机工作,因此我需要将此主密码的某些版本存储在本地存储中或作为 cookie(最好是 cookie)。我希望它能像其他密码管理器一样工作,所以如果有人能提供一些关于他们如何解决这个问题的见解,请提供。

我在本地存储主密码的最佳方式是什么?我希望我的方法尽可能安全。如果我可以采取不同的方法,我很想知道。我最主要的是我需要 webapp 能够离线工作。

请注意,我没有使用节点。如果我可以提供任何其他信息,请询问。

谢谢!

最好的方法是(正如大家所说)不在本地保存数据。这是一个巨大的安全问题。另一件事是网站不能离线(除非它是 PWA),所以 运行 网站永远不会离线(除非你创建 PWA)。

我的建议是,如果你想让它离线工作,你可以创建 Chrome 扩展并使用 chrome.storage API 来存储加密密码(不推荐存储纯密码) .即使使用了 web 扩展,也不建议将密码存储在本地。

如果用户已登录但不再连接到互联网并且浏览器仍处于 运行,您可以使其离线工作。每次用户在关闭浏览器后打开浏览器时,您应该(总是)再次对用户进行身份验证。


1).由于您正在使用普通主密码加密保管库,因此您可以使用任何 encryption/decryption 方法来加密主密码(将使用 api 存储)并解密存储的加密密码(解密是必需的,因为你会需要简单的主密码进行验证)。

散列算法在这里不是一个好的选择,因为散列是一种加密方式,并且根据您使用的算法,您可以对同一字符串使用不同的散列。

2).是的,您可以检查 storage.local 浏览器兼容性 here

Electron可以帮助你开发你想要的东西。使用 Electron,您可以为任何 S.O.

开发离线应用程序

而你只需要了解 HTML、JavaScript 和 CSS。

看看官方website

今天很多应用程序都是使用 Electron 制作的,比如 VS Code、Slack 等等,看看这个 link:App in Electron

如果你真的想测试,按照这个做一个简单的应用程序 Tutorial

要在本地存储您的密码,您可以使用加密密钥并连接机器信息以构成密码的一部分。

例如:

您可以通过编程方式获取机器 MAC 地址 +

然后做一个简单但不太安全的 MD5 加密,你会得到这样的东西:e99cde2308fb2ff5612f801c76b18f6c

世界上有很多加密方式。

祝你好运。