适用人群说明
本教程适用于以下用户:
- 正在使用织梦CMS(DedeCMS)搭建企业站、个人博客或资讯类网站的新手站长。
- 接手了别人留下的织梦网站,发现后台经常被攻击、文件被篡改、或被挂马,急需安全加固的运维人员。
- 对PHP和MySQL有一定基础,但缺乏漏洞修复实战经验,希望系统学习从诊断到修复全流程的开发者。
无论你是刚接触织梦的“小白”,还是被漏洞折腾得焦头烂额的“老站长”,跟着下面一步步操作,都能把千疮百孔的网站重新“扶起来”,并且学会如何防患于未然。
第一步:环境自查与备份(救命环节)
重要提醒: 在动手修改任何文件之前,请先完整备份网站文件和数据库!下面提供两种方式:
- 文件备份:使用FTP或宝塔面板,将网站根目录整个打包下载到本地(例如压缩为
wwwroot_备份日期.zip)。 - 数据库备份:登录phpMyAdmin或宝塔数据库管理,导出所有表为SQL文件。
- 同时记录当前版本:在网站根目录找到
/include/common.inc.php,打开查看$cfg_version变量值(例如V57_UTF8_SP2),后续需要下载对应补丁。
第二步:漏洞修复核心步骤(文件级加固)
织梦CMS历史版本存在大量高危漏洞(如SQL注入、文件上传绕过、后台弱口令爆破等),以下是修复最关键的4个动作:

织梦CMS漏洞修复全攻略,手把手教你加固网站安全,避免被黑
关闭/删除危险功能模块
- 删除安装目录:直接删除
/install文件夹(如果已安装但未删除,攻击者可重装覆盖数据库)。 - 禁用会员系统(非必需时):编辑
/member目录下的index.php,在文件头部添加exit('已关闭');;或直接删除/member文件夹(若网站无需会员功能)。 - 关闭RSS/留言板:在后台系统设置中,禁用不需要的插件模块。
修补SQL注入漏洞(最常见攻击入口)
织梦的plus目录下许多文件存在参数过滤不严问题。
- 升级或替换危险文件:从织梦官方(或安全社区)下载最新补丁包,覆盖以下关键文件:
/plus/feedback_ajax.php
/plus/guestbook.php
/plus/mytag_js.php
/include/dedesql.class.php - 手动添加过滤(无法下载补丁时):以
/plus/feedback_ajax.php为例,找到获取$aid变量的代码行,在前面加上:
$aid = intval($aid);
确保所有从GET/POST获取的数字参数强制转为整数。
删除后台默认路径与弱口令
- 修改后台路径:将
/dede文件夹重命名为一个复杂的随机字符串(例如/b3k9x7),修改后,需同步更新/include/config.php中的$cfg_cmspath变量,并修改/data/admin/config.txt里的后台路径指向。 - 更换管理员密码:登录后台(新路径),进入“系统” -> “系统用户管理”,将admin账户密码改为大小写+数字+符号组合(至少12位),同时删除默认创建的测试账户。
修复文件上传漏洞(避免被挂WebShell)
- 限制上传目录执行权限:在
/uploads目录下新建.htaccess文件(Apache环境),写入:<FilesMatch "\.(php|php5|phtml|asp|asa|jsp)$"> Order Deny,Allow Deny from all </FilesMatch>
如果是Nginx,在配置文件中添加:
location ~* /uploads/.*\.(php|php5)$ { deny all; } - 修改上传配置:在后台“系统” -> “系统基本参数” -> “附件设置”中,将允许上传的文件类型去掉
php、asp、exe等危险扩展名。
第三步:配置安全要点(让漏洞无从下手)
数据库安全加固
- 修改表前缀:安装时默认前缀为
dede_,已被攻击者写死,如果你的网站已运行,可借助第三方迁移工具将所有表前缀改为xyz_(新安装时务必自定义)。 - 限制数据库用户权限:在MySQL中,为织梦专用数据库账号仅授予
SELECT,INSERT,UPDATE,DELETE权限,不给予CREATE,DROP,ALTER等高危权限。
目录权限最小化
- 使用Linux服务器时,执行以下命令:
chmod 755 /www/wwwroot/你的网站 chmod 644 /www/wwwroot/你的网站/*.php chmod 444 /www/wwwroot/你的网站/include/common.inc.php chmod 755 /www/wwwroot/你的网站/uploads
关键原则:所有PHP文件设置为只读(644或444),
data、uploads目录设置为可写(755),但禁止执行(参考第二步的.htaccess)。
安全插件的最终防线
- 安装WAF防火墙:推荐使用宝塔的Nginx防火墙或ModSecurity,开启SQL注入防护、XSS防护、CC攻击防护。
- 启用后台操作日志:在后台“系统” -> “系统日志”中开启操作记录,便于事后审计异常登录和操作。
常见踩坑提醒(新手必看)
坑1:盲目使用集成补丁包导致页面报错
- 表现:覆盖文件后首页或后台出现“Call to undefined function”等错误。
- 原因:补丁包版本与你的织梦版本不一致(例如SP1补丁用在SP2版本上)。
- 解决:先查看
include/common.inc.php的版本号,去织梦论坛(或GitHub安全项目)查找对应版本的专用补丁,若找不到,手动修改单文件(参考第二步的手动过滤方法)。
坑2:只修复了前台漏洞,忽略了后台钓鱼攻击
- 表现:后台登录页面被伪造,管理员密码被暴力破解。
- 解决:除了修改后台路径,还要在
/dede/login.php(即修改后的路径)中添加验证码功能(织梦自带验证码,在后台设置中开启),使用IP白名单功能(若服务器支持),只允许公司固定IP访问后台。
坑3:误删系统关键文件导致网站瘫痪
- 表现:删除某个文件夹后,网站所有页面变白屏或404。
- 解决:永远不要随意删除
include、data、templets下的文件,如果你不确定某个文件是否必须,先在本地测试环境模拟删除,已造成瘫痪时,利用第一步的备份文件直接恢复。
坑4:自以为用宝塔面板就万无一失,却忘了修复根目录的.user.ini
- 表现:无法上传文件、或上传成功后文件不显示。
- 原因:宝塔面板默认在网站根目录生成
.user.ini文件,其中禁用了部分函数或限制了上传大小。 - 修复:检查
.user.ini中是否有open_basedir限制,如果有,改为open_basedir = /www/wwwroot/你的网站:/tmp(确保/tmp可访问),并设置upload_max_filesize = 50M。
最后一步:验证修复成果
- 扫描漏洞:使用在线安全检测平台(例如云悉安全、360网站安全检测)或自己安装的WAF,模拟常见攻击请求(如
/plus/feedback_ajax.php?aid=1 and 1=1),看是否返回正常页面而非SQL错误信息。 - 测试上传:尝试在后台上传一个名为
shell.php的文本文件,应被拦截或提示文件类型不允许。 - 检查后门:使用WebShell查杀工具(如D盾、安全狗)扫描整个网站目录,确认无异常文件。
- 重置所有用户的密码:包括管理员、编辑员、投稿员账户,强制使用高强度密码。
完成以上步骤,你的织梦CMS网站已经从一个“筛子”变成了“铜墙铁壁”,安全维护没有终点,建议每季度检查一次补丁更新,并定期更换后台路径和密码,如果你在修复过程中遇到任何报错,按照“先备份、后尝试、看日志”的原则,总能找到解决办法,动手操作吧!
发表评论