2014 年那个临时 PHP 补丁被装了近两千万次,今天我把它弃用了
来源: jakeasmith.com — 2026-09-15
概述
Jake A. Smith 在 2014 年为 AOL 的内容管理系统从 PHP 5.2 升到 5.3 写了一个 http_build_url 的替代实现,174 行,本打算顶一两年。十二年后它的安装量接近两千万,每月仍有四十万次以上,还被 WPML 直接打包,并经 idna-convert 进入 Debian 与 Ubuntu。最近重看代码,他发现一个把 URL 尾部斜杠拼路径时吃掉路径里所有字母「a」的 bug,最终决定弃用,而不是自己回坑维护或移交给别人。
核心要点
- 这个 polyfill 十二年间被从 Packagist 安装近两千万次,目前每月仍有 40 万次以上。
- WPML 把它直接打包进代码库,该插件号称安装在 150 万以上站点,它又经 idna-convert 进入 Debian 与 Ubuntu。
- 一个注释写着「尾部斜杠的变通」的补丁会把路径里其他所有字母 a 一起删掉。
- 他不打算移交维护权:下游没人审查过的新维护者正是攻击者的目标,文中举了 xz Utils 后门为例。
- 替代方案早已成熟:PHP League 的 URI 库,以及 PHP 8.5 内置的标准 URI API。
金句
对一个临时修复来说,这已经是很不错的一段旅程了。
👍 0
👎 0
返回 Lobsters 首页