我正在使用电子开发跨平台的独立应用程序。
我希望存储私有数据,如私钥,私人数据等 在app中执行。像加密/解密数据一样执行。
或者
我想存储一些安全的信息,如用户密码,专有 应用程序上的数据
是否有任何可能的方式来存储这些类型的安全信息和应用程序用户无法获得任何方式?
答案 0 :(得分:5)
为Atom编辑器制作了一个NPM模块(该应用程序是Electron制造的),名为Keytar。它使用本机OS API进行安全存储。例如。 OS X上的钥匙串。
答案 1 :(得分:4)
我不知道您正在使用的具体技术,因此我的答案将指出关键存储问题。
首先,两个大的评论:
现在,有人建议。无论你做什么,都不要将你的密钥存储在明文中(而且硬编码要少得多)。如果使用公钥加密,PKCS12文件(通常扩展名为.p12或.pfx)是存储数据的标准方法。它们通常受密码保护。
在这里你遇到了一个问题:如果你有钥匙,你需要使用它。如果你使用密钥,它将在" plaintext"中,至少在RAM中。因此,您需要一种方法来启用访问,以使密钥尽可能隔离。如果操作是由用户触发的,那么事情就相当不错了,因为在使用密钥之前可以要求输入密码。
但是,如果操作是自动执行的,则需要找到存储密码的方法。即使像某些PGP实现那样的安全软件也有这样的方法并不好:
history
。我没有提供每个选项的详细信息,因为您可以做的可能取决于您的框架允许的内容以及系统的使用方式,但我希望它有助于作为不同选项的参考。在任何情况下,都不会在您自己的上实施任何加密功能。糟糕的加密比没有加密更糟糕。
答案 2 :(得分:2)
在电子中存储数据的完美方式是这个包:https://www.npmjs.com/package/electron-data-holder
此包将数据存储在 JSON 文件中,但它使您能够对数据进行加密。
在文档中阅读更多内容
答案 3 :(得分:0)
避免在电子应用程序中存储私钥或服务器端详细信息,例如私钥。可以从app.asar
文件访问Electron应用程序的数据和文件,而electronic根本不保护内容。电子中没有这种代码保护机制。但是NW.js
支持源代码保护,您可以阅读here。因此,根据我的说法,在电子源代码中存储诸如签署证书或私钥之类的私人认证并不安全。
另一种方法是,您可以在Mac的钥匙串中使用node-keytar,在Windows中使用凭据管理器,而在Linux中使用本机api使用Gnom Keyring来存储这些数据。但是,这些凭据仍可供用户访问,并且对于存储私有令牌(即具有管理权限的GitHub私有存储库的令牌)没有意义。这取决于用户,如果他/她足够复杂以了解您在钥匙串,凭据管理器或钥匙圈中存储了什么,他们可能会滥用它或对您使用。所以最后的答案是,
请勿在电子源或使用节点键盘中存储凭据/私钥或管理令牌。