WP-CLI Auditor:对已安装插件的 Wordfence RSS 通知进行分流
Source: Dev.to

import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';我构建了一个 WordPress 插件,添加了 wp wordfence-audit plugins 命令,并标记出与当前 Wordfence 博客 RSS 源中的漏洞信号匹配的已安装插件。目标是 快速分流 现有的 RSS 工作流,而非 替代完整的漏洞数据库。
问题
安全团队经常首先收到 Wordfence 每周通报,但他们仍然需要一种快速的方法来回答:
“我们是否运行了这些插件中的任何一个,并且我们安装的版本是否在受影响的范围内?”
没有 CLI 自动化,这就变成了在多个站点之间进行手动电子表格操作。
解决方案
插件:
- 获取 Wordfence RSS 源。
- 解析每个条目的 HTML 内容。
- 从
wordpress.org/plugins//URL 中提取插件 slug。 - 解析版本约束(例如 “up to”、 “≤”、 “less than”)。
- 通过 WP‑CLI 加载已安装的插件。
- 使用 PHP 的
version_compare()比较版本。 - 将结果输出为表格、JSON 或 CSV。
flowchart LR
A[wp wordfence-audit plugins] --> B[Fetch Wordfence RSS feed]
B --> C[Parse item HTML content]
C --> D[Extract plugin slug from wordpress.org URLs]
D --> E[Parse version constraints\nup to, F[Load installed plugins via WP‑CLI]
F --> G[version_compare matching]
G --> H[CLI output: table / json / csv]技术栈
| 组件 | 技术 | 原因 |
|---|---|---|
| 平台 | WordPress 插件 + WP‑CLI 命令 | 可在任何具备 CLI 访问的 WP 站点上运行 |
| 信号来源 | Wordfence 博客 RSS feed | 轻量级,无需 API 密钥 |
| Slug 提取 | 正则匹配 wordpress.org/plugins// | 可靠的规范 URL |
| 版本匹配 | PHP version_compare() | 内置函数,能正确处理语义化版本 |
| 输出 | 表格、JSON、CSV | 适配任何下游工具 |
💡 提示:RSS 作为轻量级信号来源
当 API 尚未提供时,RSS 非常有用。Wordfence feed 在无需身份验证、速率限制或 API 密钥的情况下提供可操作的信号。对于生产级覆盖范围,可将 RSS 筛选与完整的漏洞数据库结合使用。
⚠️ 注意:版本解析需要标准化
像 2.1.3. 与 2.1.3 这样的版本字符串会导致 version_compare() 出现错误匹配。normalizeVersionToken 辅助函数会去除尾随点并处理边缘情况。若不使用该函数,真实匹配可能会被遗漏。
// src/WordfenceRssClient.php
// Extract plugin slugs from WordPress.org links in RSS HTML
preg_match_all('#https?://wordpress.org/plugins/([a-z0-9-]+)/?#i', $html, $matches);// src/WordfenceRssClient.php
// Parse version constraints from advisory text
if (preg_match_all(
'/versions?\s*(?:up to| 'max_inclusive',
'max' => $this->normalizeVersionToken($maxVersion)
];
}// src/SignalMatcher.php
// Compare installed version against advisory constraint
if ($type === 'max_inclusive' && isset($constraint['max'])) {
if (version_compare($installedVersion, (string) $constraint['max'], '# 表格输出(默认)
wp wordfence-audit plugins
# 用于脚本的 JSON
wp wordfence-audit plugins --format=json
# 用于电子表格的 CSV
wp wordfence-audit plugins --format=csv > audit.csv架构拆解
| 组件 | 责任 |
|---|---|
WordfenceRssClient | 下载 RSS 并提取 slug、严重性、版本约束 |
SignalMatcher | 使用 version_compare 将约束与已安装的版本进行比较 |
AuditCommand | 公开 wp wordfence-audit plugins 并格式化输出 |
相关阅读
为什么这对 Drupal 和 WordPress 很重要
运行数十个插件的 WordPress 站点持续面临新披露漏洞的风险。这个 WP‑CLI 审计工具让机构和站点维护者能够自动化地对 Wordfence 建议进行每周的分流,而无需手动处理电子表格。
对于多站点网络或托管托管的站点群,将 JSON 输出导入仪表板即可立即了解哪些站点需要打补丁。
Drupal 团队可以使用 Drush 命令应用相同的 RSS‑to‑CLI 模式,将 drupal.org 的安全建议与已安装的模块进行交叉引用。
我学到的
- RSS 在没有 API 可用时可以作为有用、轻量的信号来源。
- 从规范的
wordpress.org/plugins//URL 中提取 slug 对快速匹配是可靠的。 - 版本解析需要规范化(
2.1.3.与2.1.3),否则会出现错误匹配。 - 对于生产级覆盖,需将 RSS 初筛与完整的数据库/API 扫描相结合。
参考资料
寻找一位不仅编写代码,还构建能够倍增团队产出的 AI 系统的架构师?在 victorjimenezdev.github.io 查看我的企业 CMS 案例研究,或在 LinkedIn 与我联系。
