所有文章

过时的 WordPress 插件:先更新什么,删除什么

为什么旧插件是进入 WordPress 最常见的入口,如何发现它们,先更新什么,删除什么,以及要不要开启自动更新。

Radek,ENSOMEDIA发布于 4 分钟阅读In EnglishPo polskuAuf DeutschEn españolEn françaisبالعربية

WordPress 本身维护得相当好。有一个庞大的社区在为它工作,安全修复发布得很快,小版本更新多年来一直是自动安装的。薄弱的环节是插件。

每个插件都是别人写的一段代码。有时来自拥有自己安全团队的大公司,有时来自一个几年前就不再维护它的个人。一个典型的企业网站有十几个插件,网店往往更多。只要其中一个有漏洞就够了。

插件为什么是最常见的入口

以追踪 WordPress 漏洞为业的公司,比如 Patchstack 和 Wordfence,每年都会发布汇总报告。每次的情况大同小异:新发现的漏洞中,绝大多数在插件里,主题中的较少,WordPress 核心只占一小部分。

机制很简单。插件作者得知了一个漏洞,发布修复后的版本。更新说明是公开的,代码也是公开的。有人在找容易得手的目标,就把新旧版本对比,看修了什么,再写一个脚本,去搜寻仍在使用修复之前版本的网站。更新了插件的网站是安全的。放着不管六个月的,就进了名单。

没有人专门针对你的企业。机器人是成批检查网站的,谁让它们进得去,就拿下谁。

如何看出哪些已经过时

登录后台,打开仪表盘 > 更新。顶部是你的 WordPress 版本,下面是有新版本可用的插件和主题列表。左侧菜单里插件旁边带数字的红色标记,会告诉你有多少个在等待更新。

在插件页面,每个过时的插件,名称下面都有一条提示,说有新版本可用,并附有详情链接。点开它。在更新日志里,作者常常会直白地写明他们修复了一个安全问题。

也去看看工具 > 站点健康。WordPress 会在那里自己指出一些问题,比如应该移除的未启用插件,或者服务器上过时的 PHP 版本。

有一个陷阱:没有更新通知,不等于插件是最新的。在官方目录之外购买的付费插件,通常只有在授权有效时才会更新。随主题捆绑的插件,常常要等主题作者发布新版本。如果授权三年前就过期了,后台可能什么异常也不显示,而这个插件已经三年没有动过了。问问做网站的人,有没有这样的插件。

先更新什么

如果积压了很多,不要只是点“全部更新”然后听天由命。比较合理的顺序是:

  1. 更新日志里提到“security”,或写明了漏洞类型(比如 XSS 或 SQL 注入)的插件。
  2. 访问者直接与之交互的插件:表单、网店、登录和注册、文件上传、页面构建器。
  3. WordPress 本身,如果落后了整整一个大版本。
  4. 主题和其余的插件。

如果有东西无法更新,因为新版本需要更新的 PHP 或更新的 WordPress,这本身也说明了问题。整个网站已经落后了,与其一块一块地打补丁,不如好好做一次正式的检修。

该删除而不是更新的

停用的插件仍然留在你的服务器上。它的文件常常可以绕过后台被直接访问,所以未启用的插件里的漏洞,照样是漏洞。如果你不用某个插件,停用它,然后点删除。只是关掉是不够的。

第二类是被弃置的插件。打开该插件在 wordpress.org 目录里的页面,看它上次更新是什么时候。如果它没有在最近三个 WordPress 大版本上测试过,目录会在描述上方显示明确的警告,说它可能已不再维护。如果插件已被关闭,你会看到一条提示,说它已无法下载。有时关闭的原因,是一个始终没有修复的安全问题。

这样的插件需要换成仍在维护的替代品。更换之前,先写下它原来做什么,以便事后检查一切是否仍和以前一样。

更新之前先备份

大多数更新会顺利通过,没人察觉。但偶尔,新版本会与主题或其他插件冲突,你看到的就不是网站,而是一片空白,或者一条严重错误的提示。WordPress 随后会给管理员发邮件,描述问题并附上恢复模式的链接,不过最好用不上它。

所以,在任何一轮较大的更新之前:

  • 对文件和数据库做一次完整备份,存放在服务器之外(关于被遗忘的备份的那篇文章说明了为什么不能放在网站文件夹里),
  • 一次更新一个插件,每次更新后,检查首页、联系表单,如果是网店,还要检查购物车和结账,
  • 网店的较大更新,避开最忙的时段,
  • 如果主机商提供网站的测试副本,也就是所谓的预发布环境,先在那里试更新。

自动更新:开还是关

从 5.5 版本开始,WordPress 允许为每个插件单独开启自动更新。在插件页面,每一项都有一个启用自动更新链接。

好处显而易见:安全修复会自己装好,不用等有人抽出时间。每次自动更新之后,WordPress 都会给管理员发一封邮件,说明改了什么。

坏处也同样明显。如果更新弄坏了什么,可能发生在夜里或周末,没有人盯着的时候。

对小企业来说,一个合理的折中是这样:

  • 来自可靠作者的小而简单的插件,自动更新,
  • 网店、页面构建器,以及订单所依赖的一切,手动更新,但要有规律,比如每周一次,更新前先备份,
  • 不用的和被弃置的插件,从网站上移走。

最糟的做法,是手动更新而实际没人去做。如果你不确定有人每周会打开后台,那么自动更新的风险,要小于一年都不去碰的插件。