WordPress安全:如何禁用user_id 0及检测密码泄露用户
WordPress网站user_id=0篡改用户数据的排查与解决办法
问题背景
我的WordPress网站安装了Stream插件用于监测网站活动,排查可疑活动时发现异常:user_id为0的对象正在修改其他用户的数据(截图如下)。此前网站曾遭恶意软件感染,已清理并安装了安全插件和防火墙,但问题仍未解决。需要解决两个核心问题:
- 如何禁用user_id 0?
- 如何检测密码泄露的用户?

当前安装的插件列表:
Admin Menu Editor Version 1.11 by Janis Elsts | Auto-updates disabled BEAF - Ultimate Before After Image Slider & Gallery Version 4.3.15 by Themefic | Auto-updates disabled Custom links in Elementor Image Carousel Version 1.1.1 by Charlie Etienne | Auto-updates disabled Elementor Version 3.13.2 by Elementor.com | Auto-updates disabled Element Pack Lite - Addons for Elementor Version 4.8.0 by BdThemes | Auto-updates disabled Essential Addons for Elementor Version 5.7.2 by WPDeveloper | Auto-updates disabled Essential Blocks Version 4.0.8 by WPDeveloper | Auto-updates disabled Favethemes Insights Version 1.2.6 by Favethemes | Auto-updates disabled Flying Scripts Version 1.2.3 by WP Speed Matters | Auto-updates disabled Halorumah Version 0.0.1 by Ardi Renaldi | Auto-updates disabled Houzez CRM Version 1.3.3 by Favethemes | Auto-updates disabled Houzez Login Register Version 2.8.1 by Favethemes | Auto-updates disabled Houzez Theme - Functionality Version 2.8.1 by Favethemes | Auto-updates disabled Nav Menu Roles Version 2.1.2 by Kathy Darling | Auto-updates disabled Pricing Table by PickPlugins Version 1.12.9 by pickplugins | Auto-updates disabled PRO Elements Version 3.6.4 by PROElements.org | Auto-updates disabled Redux Framework Version 4.4.1 by Team Redux | Auto-updates disabled Site Kit by Google Version 1.93.0 by Google | Auto-updates enabled Stream Version 3.9.3 by XWP | Auto-updates disabled Wordfence Security Version 7.9.2 by Wordfence | Auto-updates disabled WPCode Lite Version 2.0.12 by WPCode | Auto-updates disabled WP Offload Media Lite Version 3.2.2 by Delicious Brains | Auto-updates disabled WP Rocket Version 3.12.3.3 by WP Media | Auto-updates disabled Yoast SEO Version 20.7 by Team Yoast | Auto-updates disabled
一、禁用user_id=0的操作方法
WordPress中user_id=0代表未登录用户(访客),正常情况下访客没有权限修改用户数据。出现这种情况说明网站存在权限漏洞,或是有恶意代码绕过了权限校验。
1. 拦截未登录用户的敏感操作
通过WPCode Lite添加自定义代码,直接阻止未登录用户修改/创建用户:
- 打开WPCode Lite插件,新建PHP代码片段,插入以下代码:
add_action('init', function() { // 识别未登录用户(user_id=0) if (get_current_user_id() === 0) { // 拦截用户更新操作 add_filter('pre_user_update', function($data, $user_id) { wp_die('未授权的用户修改操作'); }, 10, 2); // 拦截用户创建操作 add_filter('pre_user_create', function($data) { wp_die('未授权的用户创建操作'); }); } });
- 保存并启用该片段,未登录用户尝试修改用户数据时会被直接阻断。
2. 排查漏洞来源
- 先禁用小众/非知名插件(如Halorumah、Custom links in Elementor Image Carousel),观察异常操作是否消失,排查插件漏洞。
- 检查主题核心文件(functions.php、header.php等),确认是否存在隐藏后门或未授权操作的恶意代码。
二、检测密码泄露的用户
1. 利用Wordfence Security扫描
- 打开Wordfence的「扫描」功能,运行完整扫描,插件会自动检测用户密码是否在已知泄露数据库中。
- 扫描完成后,查看「密码泄露」类告警,直接重置对应用户的密码,并强制用户登录时修改密码。
2. 辅助检测方案
如果Wordfence检测不够全面,可通过以下方式补充:
- 导出用户邮箱列表,使用本地运行的密码泄露检测工具批量检查(避免使用需上传数据的在线工具,防止用户信息外泄)。
- 通过WPCode添加登录校验代码,拦截使用泄露密码的登录行为:
add_action('wp_authenticate', function($username, $password) { // 替换为本地存储的泄露密码哈希列表 $leaked_password_hashes = []; if (in_array(wp_hash_password($password), $leaked_password_hashes)) { wp_die('你的密码已泄露,请重置密码后再登录'); } }, 10, 2);
额外建议
- 立即更新所有插件、主题及WordPress核心版本,禁用的插件优先升级后再测试。
- 开启Wordfence实时防护,设置严格登录规则(如限制登录次数、禁止陌生IP登录)。
- 定期通过Stream插件查看网站活动日志,重点关注用户数据修改、权限变更等敏感操作。
内容的提问来源于stack exchange,提问作者Loderunner
相关产品推荐
相关产品推荐

