网站被黑别慌 3步图解dedecms修复教程
上周刚帮客户救火,半夜三点手机响,说是官网首页挂马了,打开全是赌博广告,百度收录瞬间清零。这种“网站被黑挂马不知道怎么办”的恐慌,做网站的人都经历过。别急着删库重装,先冷静下来。DedeCMS(织梦)虽然是老系统,但生态庞大,很多中小企业的站还在用。今天这篇【自己做的网站套dedecms教程】,不讲虚的,直接给出一套可落地的【图解步骤】,从排查到修复,再到防止二次入侵,手把手教你把站救回来。
1. 紧急止损:先断流再查因,别让损失扩大
很多人第一步就错了,直接改代码或者重装。错!如果后门还在,你改一百遍也是白搭。第一步必须是物理隔离。
1.1 切断外部访问
立刻登录你的服务器控制台(阿里云、腾讯云都有),在安全组里把80、443端口对外关闭,只保留内网访问或特定IP访问。这样黑客还在,但用户进不来了,损失停止。
1.2 备份当前“案发现场”
千万别删文件!把整个网站目录、数据库完整打包下载到本地。这是你后续排查的依据,也是如果修复失败时的“后悔药”。在腾讯云开发者社区的技术论坛里,很多运维专家都强调过:保留原始现场是溯源的关键。
1.3 排查入侵痕迹
DedeCMS被黑,通常有这几个典型特征:
- 异常文件:根目录或子目录下出现
index.html、xxx.php等看起来不像DedeCMS结构文件。 - 数据库注入:
dede_member或dede_arctmp表里多了奇怪的会员或模板记录。 - 系统日志:查看服务器
/var/log/apache2/error.log或 Nginx 日志,看是否有大量 404 或 500 错误,以及异常的 POST 请求。
老手提示:用
find命令查找最近修改的文件:find /www/wwwroot/your_site -mtime -7 -type f,把7天内修改过的文件列出来,重点检查这些。
2. 核心修复:DedeCMS源码层面的深度清理
确认了入侵点,接下来是硬仗。DedeCMS的权限模型比较松散,很多漏洞源于文件上传和SQL注入。
2.1 清理恶意代码
打开 dede 目录下的核心文件,重点检查:
config.php:看数据库连接信息是否被篡改,密码是否被改成弱密码。inc/inc_archives.php:这是文章管理核心,常被植入eval(base64_decode(...))这类代码。include/inc_taglib.php:标签库文件,也容易被注入。
图解步骤 1:定位恶意字符串
使用 grep 命令全局搜索常见恶意特征:
grep -r "eval(base64_decode" /www/wwwroot/your_site/
grep -r "assert" /www/wwwroot/your_site/
如果搜到了,直接删除该行代码。注意,不要盲目删除整个文件,DedeCMS很多文件是相互依赖的。
2.2 数据库清洗
进入 phpMyAdmin,执行以下检查:
- 检查会员表:
SELECT * FROM dede_member ORDER BY mid DESC LIMIT 10;看最新的几个会员是不是自动注册的垃圾账号,如果是,删除。 - 检查模板表:
dede_arctmp表,看是否有未知的模板记录,这些模板往往包含恶意代码。 - 检查广告表:
dede_addonads,看是否有恶意的广告链接。
关键细节:有些黑客会在数据库字段里植入
<script>标签,导致前端页面执行恶意JS。一定要全库搜索<script和javascript:关键字。
3. 加固防御:从“裸奔”到“铁桶”
修复完只是及格,加固才是满分。DedeCMS版本老旧,必须通过外部手段弥补。
3.1 文件权限收紧
这是最简单也最有效的手段。
- 网站目录:
755 - 网站文件:
644 - DedeCMS核心目录(如 inc, include, data):设为
755,但内部文件644。 - 禁止写入:除了
data/cache和uploads等必须写入的目录,其他目录权限都设为只读。
在 Linux 下执行:
chmod 755 /www/wwwroot/your_site
chmod 644 /www/wwwroot/your_site/*.php
chmod 755 /www/wwwroot/your_site/inc
3.2 开启HTTPS与SSL证书
被黑的网站,很多时候是因为传输过程中被劫持,或者证书过期导致浏览器警告,用户随意点击。
- 证书有效期与年审:现在主流CA机构(如 Let's Encrypt)提供免费证书,但有效期只有90天。你需要配置自动续签。在腾讯云开发者社区的文档中,推荐使用 Certbot 工具:
这条命令会自动申请证书、配置 Nginx 并设置自动续签。切记,定期检查证书有效期,不要等到过期才慌。certbot --nginx -d yourdomain.com --redirect - 电子证书查询与下载:如果你购买的是商业证书(如 DigiCert, GlobalSign),登录服务商后台,找到“证书管理”,可以下载
.crt和.key文件。注意检查证书链是否完整,缺失中间证书会导致部分浏览器报错。
3.3 部署WAF(Web应用防火墙)
别指望自己写代码防注入,太累了。直接上云WAF。
- 配置示例:在腾讯云WAF控制台,开启“基础防护”和“Bot管理”。
- 自定义规则:针对DedeCMS常见漏洞路径(如
/dede/admin.php,/dede/user.php),设置频率限制,同一IP每分钟超过20次请求直接封禁。
4. 流量恢复与SEO补救
网站修复后,百度收录可能还在黑名单,或者权重大跌。这时候不能硬推,要温和引导。
4.1 重新提交 sitemap.xml
生成新的 sitemap.xml,确保所有URL都是 200 状态。通过百度搜索资源平台,手动提交 sitemap。
- 技巧:在 sitemap 中只包含核心内容页,不要包含被黑的垃圾页面。
4.2 内容清洗与重写
如果之前被注入的文章很多,直接删除会导致死链。
- 策略:对于被篡改的文章,保留标题,重写正文。
- 301重定向:对于彻底删除的垃圾页面,设置 301 重定向到首页或相关分类页,避免流量流失。
4.3 监控排名变化
使用 5118 或 Ahrefs 监控核心关键词排名。重点观察“dedecms教程”、“织梦建站”这类长尾词。如果排名持续下滑,检查是否有新的恶意链接指向你的站。
5. 长期运维:建立自动化巡检机制
修好一次不是结束,建立机制才是。
5.1 每日自动备份
配置 Crontab 任务,每天凌晨 3 点自动备份数据库和网站文件,并上传到异地云存储(如阿里云OSS)。
0 3 * * * /usr/bin/mysqldump -u root -p'password' dbname > /backup/db_$(date +\%Y\%m\%d).sql
5.2 日志告警
配置 ELK(Elasticsearch, Logstash, Kibana)或简单的日志监控。
- 告警规则:当
/var/log/apache2/access.log中出现403或401错误超过阈值,或者出现特定恶意字符串(如union select),立即发送邮件或短信告警。
5.3 定期漏洞扫描
每季度使用 AWVS 或 Nessus 对网站进行一次全面扫描。DedeCMS 官方会不定期发布补丁,关注其官方论坛,及时更新。
数据复盘与渠道优化
很多甲方只关心网站能不能开,不关心运营数据。这里给一个表格,帮你建立运营视角:
| 指标维度 | 核心指标 | 健康基准值 | 优化工具/渠道 |
|---|---|---|---|
| 安全性 | 漏洞数 | 0 (高危/中危) | AWVS, Nessus |
| 可用性 | 网站响应时间 | < 2s | Pingdom, GTmetrix |
| SEO | 核心词排名 | 前 10 | 5118, 百度站长平台 |
| 流量 | 日均 UV | 根据行业定 | Google Analytics, 百度统计 |
| 转化 | 表单提交率 | > 2% | 热图工具 (如 Clarity) |
渠道对比建议:
- 百度SEO:适合长期稳定流量,但见效慢,需要持续更新内容。
- 百度SEM:适合快速获客,但成本高,需要精准控制关键词出价。
- 微信公众号:适合私域沉淀,通过推文引导用户关注公众号,建立信任。
结尾互动:聊聊你的建站成本
折腾完这一套,相信你对“维护网站”有了更深的体会。很多甲方在找我做网站时,第一句话总是:“这个多少钱?” 第二句是:“多久能上线?” 很少有人问:“后期的安全维护怎么算?”
其实,建站的钱只是冰山一角,后期的运维、安全、SEO 才是持续投入。
想听听大家的真实情况:你之前做网站(或者维护网站)总共花了多少钱?包括开发费、服务器费、域名费,甚至被黑后的修复费。留言说说你的真实价格,咱们互相参考,避避坑。


