我依赖 PHP CLI 来处理各种个人和(希望很快)专业/关键任务“业务逻辑”。(这可能是任何其他语言,并且完全相同的问题仍然存在;我只是为了上下文而说明我个人使用的内容。)
在尽可能远的范围内,我总是自己编写所有代码。只有在绝对必要的时候,我才会不情愿地求助于使用第三方库。对于某些事情,这只是必要的。例如,电子邮件解析和其他非常复杂的东西。
为了管理此类第三方库,我使用PHP Composer。它是 PHP 的库管理器。它能够下载库及其依赖项,并使用类似于其他“包管理器”的命令更新它们。在实际意义上,这比手动跟踪并手动下载 ZIP 文件并解压缩它们并处理各种问题要好得多。它至少省去了很多实际的头痛。
但是,最基本的安全问题仍然存在:我不知道这个“安装”的代码包含什么,也不知道每次更新添加/更改了什么。有一天,当我的 Composer 获取更新时,其中一位库的作者很容易受到攻击,导致我的 PHP CLI 脚本突然将我的比特币 wallet.dat 发送到某个远程服务器,在我的机器上安装 RAT/木马,甚至更糟。事实上,它可能已经发生了,我也不会更聪明。我根本不知道。我在逻辑上无法有任何想法。
我自己的代码库总共大约 15,000 行。我花了一年多的时间来煞费苦心地检查那个代码库。那是我写的代码,我非常熟悉......
我的“作曲家”目录树目前有超过 120,000 行代码。这就是我需要的最少数量的关键PHP 库。我使用的很少,但它们有各种依赖关系,与我自己的代码相比,它们总体上往往非常臃肿/膨胀。
我怎么能“审查”这一切?!这根本不会发生。我什至在尝试后不久就“退出”了。我什至不知道我将如何通过我自己的代码的另一轮“审查” ——更不用说这个由其他人编码的 10 倍大的代码了。
当人们说“审查第三方代码”是“必须”时,他们究竟是什么意思?我也同意这是“必须的”,但那就是令人讨厌的现实。我永远不会有时间和精力去做这件事。另外,我显然没有钱付钱请别人去做。
我花了无数个小时试图了解Docker,看看是否有某种方法可以以某种方式“封装”这些不受信任的第三方库,但这是一场失败的战斗。我发现完全不可能做到这一点,或者回答我的许多关于它的问题中的任何一个。我什至认为这不可能以我想象的方式。