Electron 的 `safeStorage` 是用于密码和登录凭据的吗?

问题描述 投票:0回答:1

我需要使用 Electron js 存储登录凭据,因为它不像所有浏览器那样保存它们。我见过很多这样的问题,但我一直没有找到解决方案。我在电子文档中看到了有关

safeStorage
功能的内容。它是否足够安全/足够好,可以在客户端存储登录凭据?如果没有,还有什么其他工具可以做到这一点?我听说过
keytar
,但是它好吗?

node.js security electron credentials
1个回答
7
投票

Electron 中的

safeStorage
API 公开了操作系统级加密/解密使用当前用户的密钥 - 请参阅电子源chromium 的
os_crypt
。在 Windows 上,它使用 DPAPI,而在 *nixes 上,它使用操作系统具有的任何密码管理器(如文档建议)。

是否足够安全/足够好,可以在客户端存储登录凭据?

取决于,您应该首先定义“安全”。

问问自己,是否应该允许同一用户读取加密文本中的任何值?一个有技术素养的人可能会编写自己的工具来解密你使用 API 存储的东西,但你运气不好。请参阅此 QA 进行进一步讨论。

如果没有,还有什么其他工具可以做到这一点?

有很多工具(和加密算法)可以对 Nodejs 中的内容进行加密。但是,您必须记住加密要求您拥有某种密钥,并且密钥也需要受到保护。因此,请尽量避免钥匙中的钥匙出现蛋鸡问题。

基于操作系统的密钥存储通过仅使用其 API 访问的方式存储“主密钥”,避免了密钥的密钥问题。在运行时,您根本无法检索密钥,您只需发送一组字节供操作系统神奇地加密/解密。空闲时,操作系统可能依赖于安全存储,例如TPM(可信平台模块)

Electron 的

safeStorage
是密码和登录凭证吗?

取决于,如果您正在运行网络服务,最好不要这样做。您永远不应该将最终用户的用户名/密码直接转储到您自己无法保证其安全性的存储(例如您的服务器)上。您应该放置一个可以撤销或可能在以后过期的标识符 - 令牌或 cookie。

想象一下当您的最终用户设备被盗时的麻烦。如果它是令牌/cookie,他们可以请求您撤销该设备的访问权限 - 类似于“从所有其他设备中注销我。”

但是,如果它是一个可以对自身进行身份验证的现场应用程序,那么它是一个公平的游戏 - 但请记住第一点。这完全取决于您的安全模型。

Tl;博士: 它是 Windows CredentialsLibsecretKeychain 的包装器,如源代码所示。

它基本上做了

safeStorage
已经做的事情——依靠平台来存储东西。这就是为什么它取决于谁将窃取密码的威胁。

© www.soinside.com 2019 - 2024. All rights reserved.