WordPress首页被黑通常源于wp_options表被篡改,重点检查siteurl、home、theme_mods_开头及blogdescription字段,解码base64内容确认恶意代码后再清理,并同步修复wp_posts中ID=1的页面及数据库账户权限。
查 homepage 被改的根本位置:不是 index.php,是 wp_options 表
wordpress 首页被黑后显示异常内容,90% 情况下根本没动 index.php 文件,而是黑客往数据库的 wp_options 表里塞了恶意代码——尤其是 option_name = 'siteurl'、'home' 或更隐蔽的 'theme_mods_' . 当前主题名 这几条记录。phpmyadmin 里直接搜这些字段比翻文件快得多。
- 进 phpMyAdmin → 选对应数据库 → 点
wp_options表 → 点「搜索」→ 在option_name列填home或siteurl,看值是不是被改成带 js 加载外链的 URL - 重点查
option_name以theme_mods_开头的行(比如theme_mods_twentytwentyfour),点「编辑」看option_value里有没有 base64_decode、document.write、eval 等可疑字符串 - 别漏掉
option_name = 'blogdescription',有些黑链会藏在这里,前端可能被主题模板用bloginfo('description')输出到 header
删恶意代码时别乱清空 option_value:先 decode 再判断
看到 option_value 是一长串看似随机的字符串,别急着全删。那大概率是 base64 编码过的 JS,直接清空会导致主题设置丢失(比如自定义 logo、颜色等);但保留又会持续加载黑页。
- 把
option_value复制出来,在本地用 PHP 执行echo base64_decode('xxx');看解码后的真实内容——确认是document.write或跳转脚本再动手 - 如果解码后是正常 JSON(含
header_image、background_color等键),说明只是被注入了一段,得手动删掉末尾的恶意 JS 片段,保留前面 JSON 结构 - 修改前务必导出该行:选中行 →「导出」→ 格式选 SQL → 勾「仅所选行」,存个备份,防止修完前台白屏
检查 wp_posts 表里的 page_id=1:首页可能被伪装成「静态页面」
有些攻击会把 WordPress 设置成「静态首页」,然后把真正的首页内容塞进 wp_posts 表里 ID = 1 的页面(post_type = 'page'),再往它的 post_content 插入 iframe 或加密脚本。这时候改 wp_options 没用。
- 在 phpMyAdmin 里执行 SQL:
SELECT ID, post_title, post_status FROM wp_posts WHERE ID = 1 AND post_type = 'page';—— 如果返回一行且post_status是publish,接着查post_content - 点开编辑
ID = 1的行,重点扫post_content字段:找<script></script>、<iframe src="</code">、<code>onload=、eval(这类明显非法内容 - 清理时不要整段清空,先复制原内容 → 本地用浏览器 DevTools 的 Console 粘贴执行
atob('xxx')解 base64 → 确认是黑链后再删对应片段,否则可能误删正常短代码如[contact-form]
修复后必须立刻关掉 phpMyAdmin 的 root 权限和弱密码
能通过 phpMyAdmin 改库,说明黑客当初就是靠这个入口进来的——要么用了数据库 root 账号,要么用的是和 WordPress 同名弱密码的账号。不堵住这口子,两小时后又挂。
- 进 phpMyAdmin 左侧「用户账户」→ 找到连接 WordPress 的那个用户名(通常不是 root)→ 点「编辑权限」→ 把全局权限全取消,只勾选对应数据库的
SELECT、INSERT、UPDATE、DELETE、CREATE、DROP - 强制改密码:在「用户账户」里点该用户 → 「编辑特权」→ 滚到最底点「更改密码」→ 用 20 位以上含大小写字母+数字+符号的密码,别复用 WordPress 后台密码
- 顺手检查
wp-config.php里的DB_USER和DB_PASSWORD是否和刚改的一致,不一致就同步更新,否则网站连不上库
真正麻烦的不是找到哪行被改,而是黑客往往同时留了后门:一个在数据库,一个在 wp-includes/functions.php 底部,还有一个在 active theme 的 functions.php 开头。数据库修完,得接着查文件。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










