网站被黑有两种发现方式:一种是自己看到页面不对劲;另一种更常见,是客户告诉你,或者你在Google里发现网站标题变成了乱码、博彩、药品的内容。
这篇讲的是不限主机的通用处理流程。如果你用的是Cloudways,它自带的恶意软件防护插件、客服怎么联系等内容,另见《Cloudways网站被黑、中病毒怎么办?》;这里更侧重于通用的判断思路和顺序。
先说一个原则:清理病毒没有唯一的标准答案。每个网站被感染的方式不同,下面是按WordPress官方文档的思路整理的步骤,网站如果是商城、有重要的客户数据,建议找专业人员处理。
怎么确认网站真的中毒了?
WordPress官方文档把这些叫做「入侵迹象」(Indicators of Compromise)。出现下面任何一项,都应该当作中毒处理:
- 网站被Google、Bing等标记为危险或被列入黑名单;
- 主机商停用了你的网站,或者发来了通知;
- 访客说他们的杀毒软件报了警;
- 有人告诉你,你的网站在攻击别的网站,或者在发垃圾邮件;
- 出现了你没创建过的管理员账号,或者有你没做过的操作;
- 页面上直接能看到被改动的内容。
还有几种只有特定人群才看得到的症状,站长自己在电脑上看往往一切正常:
- 只在手机上跳转,或者只有从搜索结果点进来才跳转到广告、赌博、成人页面;
- 搜索结果里的标题和摘要被换了。在Google搜索
site:你的域名,如果出现了你从没发布过的页面,比如日文、中文的商品页,说明被批量注入了垃圾页面; - 后台正常,前台出现隐藏的外链,用「查看网页源代码」搜
<iframe、eval(、base64_decode,如果出现你不认识的内容,要警惕。
确认时可以用这些办法:
- 用手机流量(不是家里的Wi-Fi)从搜索结果里点进网站;
- 打开后台「用户」,看有没有陌生的管理员;
- 打开后台「插件」,看有没有不认识的插件;
- 在Google Search Console里看「安全问题」,如果被Google发现了会在这里提示;
- 用在线扫描工具检查,比如Sucuri SiteCheck、VirusTotal,它们是从外部抓取你的页面,能发现被注入的脚本和黑名单状态,但扫不出藏在服务器里的后门文件,所以扫描结果干净也不能完全放心。
先别急着清理,做这几件事
1. 记录下来
WordPress官方文档把「记录」排在第一步。写下:
- 你看到了什么症状,什么时候发现的(带时区);
- 最近做过什么:装了哪个新插件、改了哪个主题、换过哪些人的权限;
- 你的主机环境:主机商、PHP版本、WordPress版本。
这既是后面判断入侵时间点的依据,需要找主机客服或专业人员时,也是最有用的材料。
2. 先扫一下自己的电脑
很多入侵的源头在站长的电脑上:木马记录下你登录FTP和WordPress后台时的密码,攻击者就可以用你的账号直接进入。官方文档建议用杀毒软件做一次全盘扫描,如果有疑虑,换一款不同的杀毒软件再扫一次,因为有的病毒能躲过特定的软件。后面要改的密码,也最好在干净的设备上改。
3. 联系主机商
尤其是共享主机,同一台服务器上其他网站也可能被感染,主机商可能已经在处理,也能帮你确认是真的被黑,还是服务临时中断。同时问清楚:
- 他们有没有服务器端的查杀工具(比如Hostinger、Cloudways在服务器层面有恶意软件扫描,具体以各家后台为准);
- 备份保留多久,能还原到哪一天;
- 服务器的IP有没有因为发垃圾邮件被邮件服务商拉黑。
4. 备份一份「中毒现场」
清理的操作可能误删文件,所以动手之前,把当前的网站文件和数据库都备份下来。官方文档也建议在进入清理阶段前再拍一份快照,万一搞砸,还有一份坏的备份可以参考。这份备份只用来留证和比对,不要在别处还原来用。
备份的几种做法,见《WordPress网站怎么备份?》。
5. 需要的话,先让网站暂停对外
如果是商城、有订单,或者正在给访客跳转到恶意页面,可以先开维护模式,或者让主机把网站暂时挂起,避免继续伤害访客和SEO。
方案一:恢复到被感染之前的备份(最稳)
如果你有一份确认干净的备份,这是最快、最省心的办法:
- 要确定入侵的时间点,比如文件的修改时间、第一次出现症状的日期,选在这之前的备份;
- 还原之后,那个日期之后的新文章、新评论、新订单都会丢失,有订单的网站要先导出这部分数据;
- 还原之后立刻更新WordPress、主题和插件。如果入侵是因为某个旧插件的漏洞,不更新的话,还会再被黑一次;
- 然后做后面「清理之后必须做的事」里面所有的改密码和检查。
主机自带备份的保留时间一般很短,被黑往往过了好几天才发现,这时候最近一周的备份可能全都已经带毒了,所以备份建议保留至少两周。
方案二:手动清理
没有干净备份,或者不想丢掉新数据,就要手动清理。核心思路是:WordPress核心、主题、插件都是开源的,可以下载一份干净的覆盖;真正需要保留的只有你自己的内容和设置。
第一步:用扫描工具找可疑文件
WordPress官方文档推荐过的应用层扫描插件有Wordfence、Sucuri Security、Quttera、GOTMLS。可以先装一个,扫描一遍,列出被改过的文件和疑似恶意代码。怎么用Wordfence,见《WordPress网站安全设置》里的扫描部分。
使用扫描结果时注意:
- 扫描工具会有误报,自己改过的主题文件、商业插件的文件会被标记,别看到红色就全删;
- 也会有漏报,病毒的后门可能不被识别;
- 所以扫描只是线索,不是结论。
第二步:替换核心文件
按官方文档,核心文件可以放心地重新上传的是wp-admin和wp-includes两个文件夹。步骤:
- 在wordpress.org下载与你网站相同版本的WordPress,版本选错了很容易把网站搞坏;
- 用FTP或SFTP把解压出来的
wp-admin和wp-includes覆盖上传。不要用后台自带的重新安装功能,因为它只会覆盖同名文件,而黑客常常新增文件,不删除的话还会留着;最好是先把旧的文件夹删掉或改名,再上传新的; - 根目录的其他文件,比如
index.php、wp-login.php等,也用官方的覆盖一遍。wp-config.php和wp-content不要覆盖,这是你网站的数据和配置。
如果你有SSH权限,WP-CLI可以更快:wp core verify-checksums能列出和官方不一致的核心文件,wp plugin verify-checksums --all检查插件,具体用法见Cloudways那篇文章里的方法二,在其他有SSH的主机上同样适用。
第三步:检查wp-content
核心文件替换后,恶意代码还常常留在这里:
- 主题:官方主题和正规市场买的主题,重新下载覆盖安装。不再使用的主题直接删除;
- 插件:同样重新下载覆盖。来路不明的、几年不更新的插件,别重装,直接删掉;
wp-content/uploads:这里本来只有图片和文档,不应该有.php文件,有的话大概率是后门;wp-content/mu-plugins:这里的文件会被WordPress自动加载,也是攻击者喜欢藏的地方,如果你自己没有用过,里面有东西要仔细看;- 名字很像正常文件但又有点不对的文件,比如
wp-config-sample.php之外的各种wp-xxx.php。
第四步:检查几个常被改的文件
官方文档特别提到这些:
.htaccess:无论哪种感染,这是最常被改的文件之一,常用来做手机跳转或搜索引擎来源跳转。根目录以及子目录里都可能有多个,打开看有没有看不懂的规则。删掉重新生成也行:删掉后到「设置 → 固定链接」点保存,WordPress会生成一份新的;index.php、header.php、footer.php、functions.php:一旦被改,会影响所有页面。比如在index.php最开头插入一大段加密代码,或者在functions.php里藏一个自动创建管理员的函数;wp-config.php:看有没有不认识的include、eval之类的代码。
第五步:检查数据库
文件清干净了,数据库里也可能有东西:
- 后台「用户」里删除所有陌生的管理员账号,已有账号的角色也看一下有没有被偷偷升级;
- 在phpMyAdmin里检查
wp_options表的siteurl和home有没有被改,active_plugins里有没有陌生的插件; - 文章内容或者小工具里可能被插入了
<script>或<iframe>,用搜索功能找<script、<iframe、eval(。
没有后台权限,攻击者可能把你的管理员账号劫持了,可以通过phpMyAdmin直接重置密码,具体见《WordPress登录后台的账号密码是多少?如何找回账号》。
第六步:处理垃圾页面和搜索结果
如果在Google搜site:你的域名看到了你没发布过的垃圾页面(比如日文关键词的商品页),说明攻击者批量创建了页面,这在业界叫「日文关键词劫持」。Google的建议是:
- 先完整备份,再从干净的安装包重装核心文件;
- 清掉这些页面和生成它们的文件、数据库条目、sitemap;
- 注意这类攻击常做伪装(cloaking):给访客和搜索引擎显示不同的内容。所以只看自己的页面是不够的,可以用Search Console的网址检查工具,看Google实际抓到的内容;
- 检查Search Console里的所有者列表,攻击者有时会把自己的账号添加为所有者。
清理之后必须做的事
清理干净≠安全了,攻击者很可能已经拿到了你的各种密码。WordPress官方的建议是清理完之后再改一次密码,因为发现问题时改的那次,网站里可能还有后门能读到新密码。
- 所有WordPress账号的密码,尤其管理员;
- FTP/SFTP、主机面板、SSH的密码;
- 数据库用户的密码,改完同步改
wp-config.php; - 更换
wp-config.php里的安全密钥(salts):在WordPress官方提供的生成器页面api.wordpress.org/secret-key/1.1/salt/生成一套新的,覆盖wp-config.php里对应的几行,所有已登录的会话都会被踢出; - 网站用到的邮箱、SMTP密码,见《WordPress网站收不到询盘邮件?SMTP设置教程》;
- 更新WordPress、主题、插件到最新版本;
- 给管理员开启两步验证;
- 再做一次扫描,确认没有再出现可疑文件。
被Google标记危险,怎么申请复查?
如果之前浏览器或Google搜索提示「此网站可能有危险」,清理干净之后:
- 登录Search Console,打开「安全问题」报告,里面会写出Google发现的问题;
- 确认问题已经解决后,在那里提交复查请求,写明做了哪些清理;
- 通常几天内会有结果。没通过的话,说明还有残留,回头再查。
如果还没有Search Console,建议现在就注册验证并提交Sitemap,见《XML Sitemap怎么提交到Google Search Console》。Bing、Yandex等也有各自的站长工具,浏览器厂商也有各自的黑名单申诉入口。
什么时候不要再自己折腾?
- 整个网站被替换成了别的页面,数据库也被破坏;
- 扫了好几遍还有新的文件冒出来,说明后门没清掉;
- 有支付、会员、客户资料的网站;
- 主机商停用了账号,要求你提供清理证明。
这些情况,有三个选择:
- 恢复到干净的备份;
- 新建一个干净的WordPress,只把图片和文章内容导出导入,主题和插件全部重新安装,不要导入旧的数据库设置;
- 找专业的清理服务,或者请主机商协助。
常见问题
为什么清理了一次,过几天又被黑了?
有三种可能:后门文件没清干净;漏洞(通常是某个旧插件)没修,攻击者从同一个入口又进来了;密码已经泄露,攻击者用账号直接登录。所以清理之后一定要更新、改密码、再次扫描。
装一个安全插件就能自动清理吗?
不能完全依赖。扫描能发现大部分被改的文件,但后门可能藏在数据库、陌生管理员账号等地方,一键清理也可能误删。要把扫描结果当线索,自己判断。
网站被黑会影响Google排名吗?
会。被标记危险的网站,搜索结果里会出现警告,流量会掉;垃圾页面被收录,也会拖累整站。及时清理并提交复查,多数能恢复。
能起诉或者找主机商赔偿吗?
一般不能。主机商负责的是服务器和平台,网站里的代码(WordPress、主题、插件)和账号安全,由站长自己负责,具体以服务条款为准。
怎么知道是怎么被黑的?
要查日志,比如网站的访问日志、错误日志、WordPress的活动日志。普通站长很难做得很准确,通常只能推断:最近装过或没更新的插件,是最大嫌疑。WordPress官方称这一步为「取证」,目的是堵住入口,防止再被利用。
总结
- 确认:手机流量访问、
site:搜索、看陌生管理员,再用在线工具扫一遍; - 记录症状和时间,扫描自己的电脑,联系主机商,备份中毒现场;
- 有干净的备份,直接恢复,然后立刻更新;
- 没有备份,就手动清理:替换
wp-admin、wp-includes,检查wp-content、.htaccess、wp-config.php和数据库; - 清理之后,再改一次所有密码和密钥,更新,再扫描;
- 被Google标记的,在Search Console提交复查。
清理只是补救,预防更重要。日常至少做好更新、强密码、两步验证和至少两周的备份,见《WordPress网站安全设置》。不同主机的备份与恢复,见《Hostinger备份恢复》《SiteGround怎么备份和恢复网站》《Cloudways备份恢复》。



