Drupal 第三方模块的安全运用:危险很少来自 Drupal 本身,多半出在你装了哪些模块

Drupal 官方每年发布的安全公告里,相当一部分都指向第三方模块 —— 这不是猜测,翻翻 SA-CONTRIB 一类的记录就能数出来。做 Drupal 时间久了会有个直观感受:核心本身相对克制,真正让站点暴露在风险里的,往往是你装了哪些模块、每个模块有没有人维护。

这篇不打算列一堆 "要重视安全" 的正确废话。我们聊几个具体的点:为什么第三方模块是主风险,装之前该查什么,上线前怎么评估,以及装完之后靠什么兜底。长风云从 2008 年开始做 Drupal,从 Drupal 7 一路跟到现在的 Drupal 10、11,下面的说法基本都对应到真实项目上,不是纸面理论。

一、第三方模块才是多数站点的真正攻击面

Drupal 核心有一套成体系的安全设计:用户角色与字段权限、表单 API 的过滤、缓存机制,以及官方安全团队持续跟进。这套东西是核心自带的底线。第三方模块不一样 —— 它来自社区各个团队,质量参差不齐,既不在核心的防御体系里,也很难保证长期有人维护。

两个大家都听过的漏洞能说明问题:

- CVE-2014-3704("Drupalgeddon")是 SQL 注入;
- CVE-2018-7600("Drupalgeddon2")是远程代码执行,公告发布后很快被自动化扫描器盯上,被大规模利用。

这两起都出在核心,但破坏力被放大,恰恰因为大量站点堆着数量庞大、更新滞后的模块,攻击面被撑开了。模块装得越多,能被利用的入口就越多,这是最简单的道理。

所以 "要不要用第三方模块" 从来不是问题,问题是:你清楚自己站里装了什么、每一件值不值得继续留着吗?

二、装之前,至少过三道筛

很多站点选模块的标准是 "功能看着对得上",这恰恰是最容易出问题的地方。我们给客户的建议很朴素,装之前过三道关:

1. 维护状态。看最近一次提交时间、issue 队列的响应速度。一年以上没动静的模块,除非社区明确在维护,否则默认按 "高风险" 处理。
2. 下载量和口碑。下载量大不一定安全,但至少说明用的人多、被测试和被反馈的概率高;几乎没人用的模块,风险基本自担。
3. 有没有被安全体系覆盖。Drupal 官方对部分模块有安全覆盖和通知机制,出漏洞会提前或同步公告;完全游离在外的模块,只能自己盯着。

说白了,开发者的信誉、更新频率、用户评价 —— 这些说法不同,背后是同一件事:这个模块有没有人持续在用、持续在维护。筛选的目的不是 "找到完美的模块",而是把 "迟早要出问题的模块" 挡在门外。

三、上线前评估,别靠 "看着没问题"

评估一个模块安不安全,常用的手段都能直接落地,不需要多高端的设备:

- 用 Composer 的 `audit` 命令扫一遍依赖,它能直接命中官方已披露的已知漏洞;
- 对着 Drupal 官方安全公告(SA-CORE、SA-CONTRIB、PSA)查目标模块是不是近期名单上的常客;
- 代码层面过关键入口:有没有权限校验、SQL 是不是拼接出来的、外部请求有没有被过滤。自己看不全的部分,让静态分析工具跑一遍兜底。

接手别人做过的项目时,我们常看到一类问题:模块能跑、界面正常,但权限没有做最小化,给了超出需要的系统级能力。功能正常和安全,是两回事 —— 很多 "没问题" 的模块,只是问题还没被触发而已。

四、装完才是开始,维护决定安全下限

模块安全这件事,装上去只是开始。三点建议:

- 更新的前提是能回退。生产环境直接 update 风险不小,先在测试环境验证,出问题能回滚,再上生产。
- 备份别省。更新、卸载、迁移,任何一步出意外,没有备份就是事故。
- 用不上的模块定期清理。站里躺着一堆没人用的旧模块,等于白送攻击面。清理和升级同样重要。

不少站点不是被什么高明攻击打穿的,而是输在 "先装上,以后再说" 这句口头禅上。

五、兼容、性能、多语言,其实是同一件事

模块与 Drupal 版本的兼容性,直接决定它能不能安全地跑起来。比如现在做 Drupal 11 的项目,就该选支持 Drupal 11 的模块,硬上旧模块往往既不稳定又不安全。从 Drupal 7、9 往上升级时,第三方模块必须同步评估,不能只升核心、不升模块。

性能和安全也经常被分开谈,实际是连着的:一个质量差的模块,可能既拖慢站点,又是个潜在的漏洞入口。多语言站点则多一道风险 —— 不同语言包下模块的表现可能不一致,需要单独测一遍。

往远看,Drupal 11 之后核心的安全能力会越来越完整,模块生态也会更强调安全设计。但趋势是趋势,当前站点该做的评估和清理,一点都不能省。

这些说到底是一件事:把第三方模块当 "正式成员" 来管理,而不是当成随手拼进来的零件。安全不是某个模块给的,是整条链路攒出来的。

结尾

安全没有一劳永逸的答案。Drupal 的可靠性来自层层累积:核心负责一部分,第三方模块是另一部分,剩下那部分在运维习惯里。与其等出了问题再补,不如把 "选、评、维" 这三步做成固定的动作。

长风云做 Drupal 企业网站、Drupal 升级和 Drupal 开发已经很多年,第三方模块的安全评估、更新与兼容性处理是我们的常规服务。

联系我们

以专业解您所忧,以诚意不负所托。

长按加微信
长风云团队联系微信二维码
长按关注公众号
长风云公众号二维码