网站被黑如何修复
凌晨三点,网站我收到主机商的被黑邮件——“您的站点存在恶意代码,已被暂停”。何修打开浏览器,网站访问自己的被黑网站,弹出的何修不是首页,而是网站满屏的英文赌博广告。那一刻的被黑滋味,就像有人在你家客厅墙上喷满了涂鸦,何修你还得自己掏钱买油漆。网站
别慌。被黑先做一件事:拔掉服务器的何修外网连接,或者至少把网站目录设为只读。网站被黑的被黑网站就像个漏水的船,你不先堵住洞,何修再怎么舀水都是白费力气。我用的是阿里云的服务器,直接在控制台把安全组规则改了一下,只留SSH端口,其他全部关闭。这一步能防止攻击者继续写入文件,或者利用你的服务器发垃圾邮件。
接下来要判断被黑的方式。最常见的三种:一是通过旧插件或主题的漏洞上传了webshell——就是那种能让你远程操作服务器的恶意脚本;二是数据库被注入了恶意链接或JS代码;三是整站文件被替换,比如你打开首页,发现内容全变了。区分方法很简单:用浏览器访问几个深层页面。如果首页被改但内页正常,多半是入口文件被劫持;如果每个页面都带广告弹窗,那基本是数据库或公共模板被注入了。
找到原因后,开始清理。我习惯用命令行操作,比FTP直观得多。先查最近24小时内被修改的文件:
find /www/wwwroot/你的站点 -type f -mtime -1 -name "*.php"
这条命令会列出所有一天内改动过的PHP文件。看到陌生名字,比如wp-login.php.bak或者shell.php,直接删除。但别全删,有些可能是你自己更新的文件。我一般还会看一眼文件头部内容——如果开头是<?php eval($_POST['x']);?>这种,百分百是后门。
文件清理干净后,数据库也得查。用phpMyAdmin登录,打开wp_posts和wp_options表,搜索<script>或者http://开头的外部链接。我遇到过最隐蔽的一次,攻击者把恶意代码藏在文章的CSS样式里,用浏览器查看源码根本看不出来,得直接SQL查询才能发现。
修复完代码和数据库,别急着上线。先改所有密码——服务器root密码、数据库密码、后台管理员密码,一个都不能漏。然后检查一下是否有新的管理员账号被创建,比如admin2或者support,有就删掉。再检查.htaccess或Nginx配置,看有没有被添加恶意跳转规则。
最后一步是加固。如果你用的是WordPress,把核心程序、主题、插件全部升级到最新版,删掉不用的插件和主题。给wp-admin目录加个访问密码,或者限制IP访问。我用了一个叫“Wordfence”的安全插件,免费版就能扫描异常文件和实时监控登录尝试。但说实话,插件只是辅助,真正靠谱的是定期备份——我吃过没备份的亏,那次被黑后只能从零开始重建,整整花了两天。
网站重新上线后,去Google Search Console提交一下“站点级处罚复核”,因为被黑期间可能被搜索引擎标记为危险网站。这个过程大约需要几天,期间流量会跌,但别急——只要内容还在,权重会慢慢回来。
修复完的那天晚上,我坐在电脑前,看着自己网站重新亮起的首页,心里有种说不出的踏实。那种感觉就像家里进了贼,你不但把门锁换了,还装了监控摄像头。虽然麻烦,但下次再有人想进来,至少得先掂量掂量。














