我们正式告别 PHP。十月(到目前为止)教会了我们什么

我们正式告别 PHP。十月(到目前为止)教会了我们什么

27 10月, 2026 · Le VPN Product Team

2026年10月19日至24日这一周,从周一到周六,整个行业接连传出重大安全新闻。如果您错过了,我们对那一周的回顾有详细介绍。简而言之:在好几起事件中,攻击者的行动快过了修复程序。

这样的一周并不会让我们推倒重来,但确实让图纸上原有的线条更加清晰。坚持一条原则是一回事,逐案见证这条原则缺失时会发生什么又是另一回事。所以,与其罗列技术步骤,我们更想解释我们所遵循的原则,因为对作为客户的您来说,方法本身比任何一次更新都更重要。其中一条原则刚刚迎来了它的里程碑:我们现在已经正式告别 PHP。

扁平风格插画:一名男子拿着笔记本电脑站在服务器机柜旁,机柜上有带蓝色对勾的盾牌,蓝色背景上还有路由器、挂锁和安全登录卡片

为什么事后打补丁是一场必输的竞赛?

多年来,标准建议很简单:及时打补丁就万事大吉。但趋势早已不利于这条建议。Google 旗下的 Mandiant 团队测量了从漏洞被公开到被利用之间的平均时间:2018至2019年为63天,2021至2022年为32天,2023年为5天,均为剔除异常值后的平均数。

5天是2023年的数字,那时 AI 工具还没有成为日常软件工作的一部分。而本月,围绕2026年10月21日 PHP2Shell 漏洞的公开披露,我们从三个不同的观察点获得了这场竞赛的最新测量结果。

Amazon 的威胁情报团队在10月17日,即公开披露前4天,就观察到一次 PHP2Shell 利用尝试,并表示在禁令解除、补丁发布之后,数小时内就出现了更多概念验证利用代码。F5 Labs 在两个 CVE(公共漏洞编号)发布前5个多小时就观察到了首次 PHP2Shell 扫描,披露后数小时内,其传感器已记录到数千次利用尝试。Cloudflare 的首席执行官 Matthew Prince 在10月22日表示,Cloudflare 在公告发布前就看到了数千次尝试,公告后45分钟内达到数万次,两小时内达到数十万次,到他发文时已达数百万次。这些只是尝试,并非经确认的入侵,但它们表明这些大门被试探的速度有多快:时间窗口如今以分钟和小时计,对某些人来说,窗口在补丁存在之前就已经关闭。

在任何修复程序存在之前就遭到利用,也绝非罕见。2023年,Mandiant 追踪的被利用漏洞中有70%,即138个中的97个,是以零日漏洞的形式被利用的,也就是说在任何修复程序存在之前。

如果漏洞利用可以在补丁可用之前就开始,并在补丁发布后几分钟内大量涌来,那么打补丁无论多么严格,都不可能是全部的方案。只依赖打补丁的防御者,等于参加了一场往往在开始之前就已分出胜负的竞赛。所以我们假设这场竞赛有时会输,并为输的情形做设计。这个假设转化为三个问题。在漏洞敞开期间,我们的系统有多少部分可能被击中?如果某个部分被击中,有多少东西可能丢失?而一旦修复程序出现,我们能多快恢复并补上缺口?我们坚持的每一条原则都回答其中一个问题,下文的全部内容也围绕它们组织。

我们为什么移除软件,而不是绕着它打补丁?

从第一个问题说起:有多少东西可能被击中。每个组织都会积累年久失修的软件:维护者早已离开的工具,因为别的东西依赖而被卡在旧版本上的组件,谁都不愿碰的代码。常见的应对方式是用变通办法和防火墙规则把这类软件包起来,然后听天由命。

我们的看法不同。无法保持更新的软件会被移除,而不是绕着它打补丁。我们不会用临时修补来维持它的运转,因为在无人维护的代码上做临时修补,是一个终将被打破的承诺。一个组件要么在我们运行它的整个期间都能得到更新,要么就根本不运行。

变通办法为什么会失效?因为变通办法只能挡住已知的漏洞。无人维护的软件并不会在维护者离开的那天就不再有弱点。研究人员和攻击者年复一年地不断发现新漏洞,而此时已经没有人来编写修复程序。每一次新发现都迫使人们再加一条规则、再加一个过滤器、再在上一层之上再加一层,这个堆叠随着每次加码变得愈发脆弱。或早或晚,会出现一个任何外层都筛不掉的漏洞,或者两层之间相互干扰,防护就在无声中失守。变通办法买来的是时间,而在被弃置的代码上,这些时间没有任何有用的去处,因为底层问题永远不会被修复。

回想一下前面那场如今以分钟和小时计的竞赛。面对有人维护的软件,这场竞赛残酷而短促,但至少还能跑。面对被弃置的软件,竞赛根本不存在,因为本应终结比赛的修复程序永远不会到来。写在纸上这听起来理所当然。实践中这却是更难走的路,因为移除某样东西通常意味着重建依赖它的一切。我们认为这个代价值得付出。攻击者无法利用一个已不复存在的系统中的弱点。

小的攻击面究竟是什么样子?

移除是缩小可被击中范围的最直接方式。它背后更广泛的习惯有一个技术名称:保持攻击面尽量小。攻击面是个很朴素的概念,就是攻击者可以试着用钥匙开锁的所有地方的总和。每一个暴露的服务、每一个第三方库、每一个插件,都是又一把需要守护的锁。我们对良好安全的定义从这里开始:最坚固的代码是你不运行的代码,最安全的数据是你从未存储过的数据。

想一想第三方库或插件究竟是什么。开发者引入一个库,就是在信任一个陌生人,往往是一位无偿的志愿者,会在这段代码运行的整个期间保证它的安全。这个库需要自己的更新、自己的安全修复、自己专注投入的维护者。如果这位维护者失去兴趣、换了工作或干脆不再回应,代码还会继续运行,但再也没有人盯着它了。此后发现的漏洞将永远敞开,这正是上一节所说的弃置问题从侧门走了进来。把这个情况乘以一个典型应用所依赖的众多组件,图景就一目了然了。每一个依赖项都是一个你素未谋面的人许下的小小承诺,其中一些承诺会悄然失效。运行的依赖越少,就意味着把自己的安全托付给越少的陌生人。

您登录的系统、您付款经过的系统,以及与我们应用通信的系统,都是用 Go 编写的。PHP 已经消失,随之消失的还有 PHP 应用往往拖在身后的那一长串库、插件和依赖项。

我们为最关键的系统选择 Go,是因为它在语言层面回答了依赖问题。Go 是内存安全的:语言替程序员管理内存,从而排除了缓冲区溢出等一整类错误,CISA(美国网络安全与基础设施安全局)在 The Case for Memory Safe Roadmaps 中将 Go 列为内存安全语言之一。这一类错误的规模超出直觉:Chromium 项目发现,其严重安全漏洞中约有70%是内存安全问题。Go 的标准库覆盖了 Web 服务所需的大部分功能,包括密码学,所以 Go 服务需要的第三方包更少,也就意味着来自陌生人的承诺更少。密码学被认真对待到这种程度:Go 自带的密码学模块已通过美国政府 FIPS 140-3 标准的验证,CMVP 证书编号 #5247。而当更广泛的生态系统中确实出现漏洞时,Go 安全团队维护着一个漏洞数据库,其 govulncheck 工具只报告程序实际调用的代码中的漏洞,使告警噪音低且可以直接处理。

这之所以重要,是因为 PHP 部署既广泛又老旧。W3Techs 报告称,在其能识别服务器端语言的所有网站中,PHP 的使用率为69.2%,其中26.6%的 PHP 网站仍在使用 PHP 7,7.7%仍在使用 PHP 5,数据截至2026年10月27日。PHP 项目自身对每个发布分支提供两年的错误和安全修复支持,之后再提供两年仅限重大安全修复的支持。PHP 7 和 PHP 5 早已超出这一切期限。互联网的很大一部分运行在连其制造者都不再保护的代码上,这等于主动报名参加第一节中那场必输的竞赛。

我们的网站是预先构建好的静态页面,您访问时没有任何服务器端代码在生成它们。一个只是文件的页面,几乎没有什么可攻击的。对于有多少东西可能被击中这个问题,这就是我们的答案:越少越好,少到我们力所能及的极限。

我们保存了您的哪些数据?

小的攻击面限制了攻击者进入的途径。第二个问题是:如果有一天真有人进来了,他们会找到什么。我们的答案是让这个发现尽可能乏味:更少的数据,保存更短的时间。

我们只索取账户运行所必需的信息。我们的隐私政策(英文)写得很清楚:一个用户名、一个电子邮件地址、一个加密后的密码,以及注册时使用的 IP 地址。付款通过第三方支付处理商完成,所以您的银行卡信息保存在以保护这些信息为全部业务的专业机构那里,而不在我们这里。

我们也在收紧数据随时间的去向。长期未使用的旧账户将被自动删除。不存在的数据不可能泄露,不可能被窃取,也不可能被索取。一个您多年前就放弃的账户,不应该继续作为一份写着您名字的隐患留在那里。如果这场竞赛有朝一日在我们这一侧失利,桌上的战利品应当被我们缩到最小。

同样的逻辑也适用于我们之外,因为其他公司同样会输掉竞赛。人们遭受的许多泄露,发生在他们很久以前注册过的商店、论坛和服务上。这就是我们提供数据泄露提醒的原因:我们的 Data Breach Scanner 会在已知的数据泄露中检查您的电子邮件地址,一旦发现就发邮件通知您,让您能在泄露被滥用之前更改密码。

如果还是出了问题,会发生什么?

第三个问题分为两半:恢复,以及补上缺口。先说恢复。良好的安全规划以糟糕的日子为前提。硬件会坏,供应商会换,有时正确的做法就是干脆放弃某块基础设施。

我们的系统在构建时就确保可以在需要时重建或迁移到别处。对您而言,这意味着一次故障,或者一个不再符合我们标准的地点,不必演变成长时间的服务中断,因为受影响的系统可以重建或迁走。如果我们判断某个环境不再够好,我们可以离开它,而不是与它周旋。

韧性不是一种戏剧化的品质。它大多表现为一切照常运转,而在这个框架里,正是它让输掉一个回合不至于输掉整个赛季。

修复程序多快能到达我们的系统?

第三个问题的另一半是速度。上述一切并不能免除打补丁的必要;它改变的是打补丁所要承担的分量。有了小的攻击面和与时俱进的软件,应用一次修复是例行公事,而不是一个工程项目。

我们的规则很简单:修复程序一出现,更新就立即发布。10月的那些测量结果解释了原因。当漏洞利用尝试在修复程序发布后几分钟到几小时内就蜂拥而至,有时甚至在修复程序存在之前就已出现,一个搁置等待的修复程序保护不了任何人。我们把发布的补丁当作发令枪。从修复程序存在到修复程序被应用之间的这段距离,是这场竞赛中防御者唯一能完全掌控的部分,所以这是我们拒绝让出的部分。

而且因为我们的技术栈很小,需要打补丁的东西本来就少,这正是三个问题交汇的地方:可被击中的越少,缺口补上得越快。

把这些问题和回答它们的原则并排放在一起,就是下面这张表:

问题我们的原则它为何能保护您
有多少东西可能被击中?无法保持更新的软件会被移除弱点无法存活于一个已不复存在的组件中
有多少东西可能被击中?小的攻击面服务、库和插件越少,攻击者可以试探的门就越少
有多少东西可能丢失?更少的数据,保存更短的时间我们从未收集、也不再保存的东西永远不可能被暴露
我们能多快恢复?可以重建或迁移的系统故障或不合格的地点可以被抛在身后,而不是缝缝补补
我们能多快补上缺口?修复程序一出现就立即应用已公开的漏洞得不到任何从容被利用的时间窗口

这一切对您意味着什么?

这意味着那三个问题都有您能切身感受到的答案。您和您的账户之间隔着的代码更少,所以可能出错的地方更少。您的数据存在得更少,所以即使最坏的情况暴露的也很有限。而我们的系统可以重建,所以我们糟糕的一天不必变成您漫长的服务中断。

我们愿意坦诚这一切的局限。开头提到的那场竞赛无法被可靠地赢下,无论是我们还是任何人,因为漏洞有时在任何人知道其存在之前就已被利用,任何架构都改变不了这一点。没有任何服务商能承诺零风险,做出这种承诺的人兜售的是信心,而不是安全。我们能承诺的是损失的形状:入口很少,可拿走的很少,回来的路很快。我们无法保证赢下竞赛的每一个回合。我们所做的建设,是让输掉一个回合对您的代价尽可能小,而我们认为,这样一个始终如一兑现的承诺,比一个无法兑现的豪言更有价值。

安全也是一项共同的事业。我们能构建的最强防护,依然受益于您这一侧的好习惯,所以如果您想要可操作的步骤,可以从我们的指南如何提升您的在线安全(英文)开始。而如果您正在挑选 VPN,无论选我们还是别家,请问一问服务商是如何思考的,而不只是他们在卖什么。这个答案会充分说明您平静的日子,以及喧嚣的日子,将会如何度过。

关于作者

Le VPN 应用与产品

Le VPN Product Team 负责开发 iPhone、iPad、Mac、Windows、Linux、Android、Apple TV、Apple Vision Pro 和 Fire TV 上的 Le VPN 应用。每当有新东西发布时,团队就会在这里撰文:新的应用、新的平台、新的功能,偶尔还有一篇说明某件事为何比预期花了更久。产品文章在发布前都会与已上线的版本和应用的更新说明核对。

Le VPN Product Team 的文章 →

关于我们如何降低您的风险的常见问题

12个月套餐节省50%

使用我们的高级VPN服务保护您的互联网连接。快速、可靠、全球私密浏览。

选择方案

30天退款保证

VTNV Solutions Limited. © 2026 Le VPN. 保留所有权利。 Sitemap