隐藏 WordPress 版本号是基础安全加固动作,推荐通过主题 functions.php 添加代码或使用安全插件实现,适合所有不希望暴露 CMS 特征的站点。
先说结论:版本号暴露会让攻击者快速匹配已知漏洞,建议优先通过代码过滤生成器信息,并清理根目录敏感文件。
- 先判断:查看网页源代码和 RSS feed 是否包含 version 信息。
- 优先做:在主题 functions.php 中添加过滤代码,删除 readme.html 等文件。
- 再验证:更新版本后重新检查,确保文件未被还原。
代码实现版
操作前警告:直接修改 functions.php 若出现语法错误会导致网站白屏瘫痪。请务必先备份全站文件及数据库,建议通过 FTP 编辑或使用子主题。
将以下代码放入当前主题(最好是子主题)的 functions.php 末尾:
remove_action('wp_head', 'wp_generator');
add_filter('the_generator', '__return_empty_string');为什么要隐藏版本号
WordPress 默认会在网页头部 meta 标签、RSS 订阅源以及部分静态资源链接中输出版本号。这相当于向外界公开了系统的“身份证”,攻击者可以利用扫描工具获取版本号后,查询漏洞数据库匹配已知漏洞。注意:隐藏版本号属于“安全隐匿”(Security by Obscurity),不能替代核心漏洞修复,仍需保持 WordPress 核心及时更新。
分步处理
1. 操作前备份
通过主机控制面板或 FTP 工具,下载 wp-content 目录及数据库 SQL 文件。若修改代码导致网站无法访问,可立即还原。
2. 建议使用子主题
直接修改父主题文件会在主题更新时被覆盖。建议创建子主题,将代码放入子主题的 functions.php 中。若不便创建子主题,请确保关闭该主题的自动更新功能。
3. 代码过滤版本信息
通过 FTP 或文件管理器进入网站根目录,导航至 wp-content/themes/当前主题目录。找到 functions.php 文件,在末尾添加过滤代码。保存后,系统不再在 HTML 头部输出 generator 标签。
4. 清理根目录敏感文件
通过 FTP 或文件管理器进入网站根目录,删除以下文件:
- readme.html:包含版本号和安装信息。
- wp-config-sample.php:配置示例文件。
- wp-admin/install.php:安装脚本,初始化后无需保留。
注意:每次 WordPress 核心升级后,readme.html 可能会被重新生成,需要养成升级后检查的习惯。
5. 使用安全插件(可选)
如果不方便修改代码,可以使用安全增强类插件,如 WP Hide & Security Enhancer。这类插件通过 URL 重写和过滤器隐藏核心文件路径和版本指纹,无需手动修改文件。
怎么验证是否生效
1. 检查网页源代码
在网站首页右键选择“查看网页源代码”,搜索关键词 generator 或 version。如果找不到包含 WordPress 版本号的 meta 标签,说明头部隐藏成功。
2. 检查 RSS 订阅
访问网站的 feed 地址(通常是 /feed/),查看源码中是否包含 version 信息。部分方法只隐藏了头部,未隐藏 RSS,需确保代码中包含了 the_generator 过滤器。
3. 检查敏感文件
在浏览器中访问 域名/readme.html 和 域名/wp-config-sample.php,确认返回 404 或无法访问。
常见坑
1. 升级后文件还原
WordPress 每次核心更新都会重新生成 readme.html 等文件。建议在每次更新后再次检查根目录,或通过.htaccess 禁止访问特定文件。
2. 只隐藏了头部
有些教程只建议删除 header.php 中的代码,这不够完整。黑客可以通过 RSS Feed 获取版本号,必须同时过滤 the_generator 钩子。
3. 忽略核心更新
隐藏版本号不代表系统安全。切勿因为隐藏了版本号就忽略 WordPress 核心和插件的安全更新,这会导致实际漏洞未被修复。
4. 插件冲突
使用安全插件隐藏路径时,可能会影响某些依赖默认路径的功能。修改前建议在测试环境验证,或确保插件支持 URL 重写技术。
参考来源
- WordPress Codex - Security Hardening
- WPBeginner - How to Hide WordPress Version Number
- OWASP - Security by Obscurity Guidelines
- WP Hide & Security Enhancer - Plugin Documentation