【问题标题】:SQLite, SQLCipher, PHP and PowerShell considerationsSQLite、SQLCipher、PHP 和 PowerShell 注意事项
【发布时间】:2020-07-27 13:48:35
【问题描述】:

所以我正在为我们的 Intranet 制作这个很棒的 web 应用程序,并且我想使用 SQLite。为了增加安全性,我认为使用 Zetetic SQLCipher 会很棒,它使 DB 文件加密且不可读,以防有人窃取它。 我知道如何将它与 PHP PDO 一起使用,但问题是最新版本仅适用于 PHP 7.1 已有 2 年历史,我不确定是否会有更多开发 https://github.com/kynetiv/php_pdo_sqlcipher 我没有找到任何其他 PHP PDO 库,但也许我忽略了一些东西。

接下来是 PowerShell,它是我的应用程序自动化和数据收集所必需的。在这里,我在考虑是否应该通过将由 PHP 处理的临时 CSV 文件写入 SQLite,或者是否应该通过 PSSQLite 直接从 PowerShell 访问 SQLite ...但是似乎 PowerShell 中没有支持 SQLCipher 的模块,所以我会不得不放弃加密。 想法?

【问题讨论】:

  • 您似乎对 SQLite 死心塌地有什么具体原因吗?在我看来,这实际上是你所有两个问题的根源。
  • 我想说我真的很喜欢 SQLite,因为它是轻量级的,有时甚至比经典的 SQL DB 服务器应用程序还要快。此外,数据库只是一个文件,当您想使用该数据库时,您不需要安装单独的 MSSQL 或 MySQL 并对其进行维护。您只需要一个默认情况下已经在 PHP 中并且易于添加到 PowerShell 的库。他们在 sqlite.org 上很好地描述了这些优势

标签: php sqlite powershell sqlcipher


【解决方案1】:

我们有一个很棒的sibling site 致力于安全性,他们要求每个人在处理安全性时首先考虑的事情之一是攻击媒介是什么以及您试图减轻哪些风险。 如果你已经这样做了,我很抱歉,你可以忽略这个

然而,我之所以这么说,是因为多合一解决方案往往给人一种错误的安全感。例如,如果您认为您的数据库很可能和/或可能会受到物理损害,那么他们也不会获取包含密码的文件,这又是什么意思呢? ways to mitigate 也有这个问题,但它们也会导致其他问题/复杂性。

我说这一切都是因为刚刚构建了一个使用数据库加密的应用程序,所以这是非常重要的。对于我们的应用程序,我们使用 Doctrine 作为 ORM,并根据需要使用 this 加密列。我们的应用程序是使用 Symfony 构建的,这可能不适合您,但它极大地简化了事情,包括您的 PowerShell 问题(稍后会详细介绍)。

回到您的问题,该 repo 似乎是 Windows 的唯一二进制文件,除非您愿意自己构建它,否则我建议您避免使用它。 PHP 7.1 已经结束生命周期,PHP 8 将在今年第四季度发布。有alternatives,但它们都需要许可证或自行构建。所以除非你愿意因此,我认为 SqlCipher 不太适合你

对于您的自动化,我再一次强调使用Symfony Console 应用程序是多么美妙。只需几行代码,您就可以拥有一个 CLI,如果您想将其编译为 PHAR,则只需一个可执行文件。我们有很多内部工具可以这样做。

如果您不想走 Symfony(或其他框架)路线,您仍然可以使用一堆参数调用您的 PHP 脚本。先写入CSV文件还是直接调用更好?两者都是绝对有效的选项,因此它实际上取决于您的用例和数据集。对我来说,如果我的 PHP 代码可以读取文件而不是进行 API 调用或从标准输入或类似的读取,那么调试起来会容易得多。因此,如果您的 PowerShell 代码可以执行任何逻辑,然后使用“处理此文件”调用 PHP,那么从我的角度来看,这通常是最好的。但是,如果您更擅长 PowerShell,那么处理可能会更好。老实说,这真的取决于。

编辑

我只是想在应用程序级别添加更多关于加密的信息。加密数据令人讨厌的一件事是它通常不可搜索,至少使用数据库本身是不可搜索的。但是,有办法解决这个问题:

此外,如果不需要从数据库中搜索,而您只是想要一个地方来存储让您的​​应用程序处理解密的东西,那么 PHP 通过 Sodium 库提供了一些非常棒且易于使用的加密。不幸的是,官方文档缺乏,但以下内容很好地揭开了事物的神秘面纱:

【讨论】:

  • 非常感谢您分享您的经验。我将检查有关 SQLite 加密替代方案的线程,但似乎我将只使用普通 SQLite,因为正如我所说,该应用程序位于 Intranet 中,因此数据安全性应仅通过帐户和文件权限来处理,这就足够了。
  • 我也可以只使用 NTFS 加密复选框,但这会限制一个 Windows 用户的文件可访问性...
  • @McVitas,如果您已经制定了计划,我添加了一些可能与您无关的编辑,但未来的读者可能会觉得它们很有趣
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-19
  • 1970-01-01
  • 2012-06-12
  • 2014-03-28
  • 2012-02-03
  • 2018-10-13
相关资源
最近更新 更多