【问题标题】:How to encrypt SQLite DB in an electron app?如何在电子应用程序中加密 SQLite DB?
【发布时间】:2019-09-04 17:51:55
【问题描述】:

我有一个电子应用程序,它将数据保存在我机器中存储的 SQLite 数据库中。我已经完成了 CRUD 操作的所有设置,并且应用程序运行良好。现在我需要加密 SQLite DB 文件。我在网上搜索了解决方案,但所有解决方案都是针对在 Electron 内部解密的预加密数据库。

要求是,用户将提供密码,应用程序将使用该密码加密数据库文件,然后用户将提供密码以解密并执行 CRUD 操作

知道如何实现吗?

P.S.:我已经检查了 SQLCipher 文档,但没有找到我需要的东西。到目前为止,我正在使用 sqlite3 节点模块来执行 CRUD

编辑 1:我尝试使用 sqlite-cipher 模块,并且能够在单独的 js 文件中加密数据库。但是当我将它与电子 ipcMain 集成时,应用程序由于高 RAM 消耗而关闭。 有什么建议???

【问题讨论】:

  • 我知道这是旧的,但我面临着类似的用例,我想使用用户传递的密码作为加密数据库的密钥。你是怎么做到的?

标签: sqlite electron sqlcipher


【解决方案1】:

电子应用程序中的加密是一件棘手的事情。 这是因为它会给你一种虚假的安全感。

您可能会加密您的本地数据库,但是使用电子很容易将其解密回来,也许它根本不值得? 获取电子应用程序的资源非常容易。缩小只有一点点帮助,但这并不是真正的保护。

您可以采取多种方法,但它们会因情况而异。 需要回答的问题是:

  • 你想保护谁?
  • 安全至关重要,或者这只是基本措施,所以不是每个人都能从数据库中获取数据 一眼?
  • 使用该应用程序的用户是否具有管理员用户权限 机器?
  • 您是直接通过电子应用程序访问数据库,还是通过一些 一种系统范围的服务(守护程序)正在与数据库通信,并且 将结果传递给电子应用程序。
  • 如果前面是“是”,你如何沟通 使用电子应用程序提供服务,这是如何保护的?

看看源代码访问讨论:

https://github.com/electron/electron/issues/3041

并查看这篇文章(尤其是安全部分):

https://hackernoon.com/electron-the-bad-parts-2b710c491547

【讨论】:

  • 您好,感谢您的回复。您所解释的是关于电子应用程序的加密。但我的问题是关于加密我在电子应用程序中使用的 SQLite 文件。有什么想法吗?
  • 所有这些话,甚至没有接近实际回答问题...
【解决方案2】:

如果您使用 SQLite,最好的选择是使用 SQLCipher。问题是您必须编译新的二进制文件才能工作,并且节点的 SQLite 和 SQLcipher 版本存在一些限制。

你可以使用这个包:https://github.com/journeyapps/node-sqlcipher

或者手动编译,这里有一个例子https://gist.github.com/aguynamedben/14253e34bc7e0a881d99c8e45eb45a47

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-01
    • 2011-06-12
    • 2012-02-10
    • 2018-09-23
    • 2017-07-29
    • 1970-01-01
    • 2015-11-24
    • 2013-03-01
    相关资源
    最近更新 更多