核心原则:纵深防御
安全不是单一措施就能解决的,而是需要像洋葱一样,层层设防,即使一层被突破,还有其他层在保护你的网站。

(图片来源网络,侵删)
第一部分:基础与核心加固
这是最基本也是最重要的步骤,能防范绝大多数自动化攻击。
修改默认后台路径和账号密码
这是老生常谈,但也是最有效的手段之一。
-
修改后台目录名:
- 不要使用默认的
/dede/。 - 使用一个复杂、无规律的名称,
/myadmin2025xyz/或/cms-admin-panel/。 - 操作方法:直接在FTP或文件管理器中重命名
/dede文件夹,然后修改根目录下的index.php文件,找到类似if(file_exists(dirname(__FILE__).'/dede/login.php'))的代码,将dede修改成你的新目录名。
- 不要使用默认的
-
修改管理员用户名和密码:
(图片来源网络,侵删)- 绝对不要使用
admin作为用户名。 - 设置一个强密码(包含大小写字母、数字、特殊符号,长度至少12位)。
- 操作方法:登录后台 -> 系统 -> 用户管理 -> 编辑
admin用户,修改用户名和密码。
- 绝对不要使用
-
修改数据库连接信息:
- 数据库配置文件位于
/data/common.inc.php。 - 修改其中的
$cfg_dbname、$cfg_dbuser、$cfg_dbpwd为你自定义的、复杂的数据库用户名和密码。 - 修改数据库前缀
$cfg_dbprefix,默认是dede_,建议修改为随机字符串,如myweb_。
- 数据库配置文件位于
删除或保护安装目录
- 删除安装目录:网站安装完成后,务必删除
/install/目录,这是黑客获取网站信息、甚至直接重装网站的后门。 - 保护安装目录:如果暂时无法删除(例如需要升级),可以在该目录下创建一个空的
index.html文件,或者创建一个index.php文件,内容为<?php exit; ?>,防止访问。
文件和目录权限设置
正确的权限是服务器安全的第一道防线。
-
核心目录权限:
/data/目录:设置为 755 或 750,这个目录存储了数据库配置文件,权限过高非常危险。/include/、/templets/等目录:设置为 755。- 所有
.php文件:设置为 644。 - 所有
.html、.jpg、.css等静态文件:设置为 644。 - 重要:不要将任何目录(特别是
/data/)权限设置为 777,这等于向全世界开放了写入权限,是极其危险的。
-
如何设置:
(图片来源网络,侵删)- Linux服务器:使用SSH连接,执行
chmod命令。chmod 755 /data。 - 虚拟主机/Windows服务器:通过FTP客户端(如FileZilla)或主机商提供的文件管理器,右键 -> 文件权限 -> 进行设置。
- Linux服务器:使用SSH连接,执行
关闭或删除不必要的模块和插件
- 进入后台,检查并禁用所有你不需要的模块,如会员系统、问答系统、表单等,每一个多余的模块都可能是一个潜在的攻击入口。
- 删除
/plus/目录下你不需要的文件,如guestbook.php(留言板),feedback.php(反馈),link.php(友情链接) 等,如果确实需要,确保它们是最新版本且已做安全加固。
第二部分:配置与代码加固
这部分涉及更深入的配置修改和代码层面的防护。
修改 php.ini 配置 (需要服务器权限)
如果你拥有服务器的管理权限,或者在虚拟主机面板中可以修改 php.ini,请进行以下设置:
-
关闭危险函数:
disable_functions = exec,passthru,shell_exec,system,proc_open,popen,escapeshellcmd,escapeshellarg
这些函数可以执行系统命令,是Webshell最常用的工具。
-
设置安全的
open_basedir:open_basedir = /www/yourwebsitepath/:/tmp/
将其限制在你的网站目录下,防止脚本访问系统其他敏感文件。
-
关闭错误信息显示:
display_errors = Off
防止因代码错误泄露服务器路径等信息。
-
设置安全时区:
date.timezone = PRC
代码层面安全补丁
织梦官方会定期发布安全补丁,请务必关注官网并及时更新,以下是一些常见的漏洞点及手动修复方法(以旧版本为例,新版本可能已修复):
-
SQL注入漏洞:
- 问题:许多文件没有对用户输入进行严格的过滤。
- 修复:在
include/common.inc.php文件的开头,加入一个全局的过滤函数,这是一个通用的防注入代码(请根据实际情况调整):// 防止SQL注入 if (isset($_GET['phpself'])) { $_GET['phpself'] = str_replace(array("'", '"', ';', '<', '>'), '', $_GET['phpself']); } if (isset($_POST['phpself'])) { $_POST['phpself'] = str_replace(array("'", '"', ';', '<', '>'), '', $_POST['phpself']); } // 对所有GET和POST参数进行转义 if (get_magic_quotes_gpc()) { $_GET = stripslashes_array($_GET); $_POST = stripslashes_array($_POST); } function stripslashes_array(&$array) { foreach ($array as $key => $value) { if (is_array($value)) { stripslashes_array($array[$key]); } else { $array[$key] = stripslashes($value); } } } $_GET = daddslashes($_GET); $_POST = daddslashes($_POST); $_COOKIE = daddslashes($_COOKIE); function daddslashes($string, $force = 0) { if (!get_magic_quotes_gpc() || $force) { if (is_array($string)) { foreach ($string as $key => $val) { $string[$key] = daddslashes($val, $force); } } else { $string = addslashes($string); } } return $string; }
-
XSS跨站脚本漏洞:
- 问题:用户提交的内容(如评论、留言)未经过滤直接输出到页面。
- 修复:在输出到HTML前,对内容进行转义,使用
htmlspecialchars()函数。echo htmlspecialchars($user_content, ENT_QUOTES, 'UTF-8');
-
文件上传漏洞:
- 问题:上传文件时没有严格校验文件类型和内容,导致黑客可上传Webshell。
- 修复:
- 修改
/dede/media_add.php,找到$fullfilename = $cfg_basedir.$activepath.'/'.$filename;之前,增加严格的文件类型和内容检查。 - 白名单机制:只允许上传jpg, gif, png, jpeg, zip, rar, pdf, doc, xlsx 等你确实需要的文件类型。
- 重命名文件:将上传的文件名随机化,
uniqid() . '.jpg',防止黑客利用文件名进行攻击。 - 存储目录权限:将上传文件存储的目录(如
/uploads/)设置为 755,确保脚本可写,但不可执行,如果可能,将上传文件存储在网站根目录之外。
- 修改
第三部分:服务器与运维安全
安装Web应用防火墙
这是最有效、最省心的防御方式。
- 推荐使用:云WAF,如阿里云WAF、腾讯云WAF、Cloudflare等。
- 作用:它们能自动识别并拦截SQL注入、XSS、文件上传、命令执行等绝大多数攻击,无需你手动修改代码。
- 对于虚拟主机:许多主机商提供了集成的WAF服务,请在控制面板中开启。
定期备份
这是最后的防线,即使网站被黑,也能快速恢复。
- :
- 网站程序文件:定期打包 目录(排除缓存和日志目录)。
- 数据库:通过后台的系统备份功能或phpMyAdmin导出数据库。
- 备份策略:
- 自动化:使用服务器定时任务(Cron Job)或主机商的备份服务,实现每日/每周自动备份。
- 异地存储:将备份文件保存到另一个服务器、云存储(如OSS、七牛云)或本地电脑,不要和网站放在同一个服务器上。
定期更新和检查
- 关注官方:经常访问织梦DedeCMS官网,关注安全公告和版本更新。
- 更新前备份:在进行任何升级前,务必备份整个网站和数据库。
- 定期扫描:使用安全工具(如安全狗、河马)或在线扫描服务,定期检查网站是否存在后门或漏洞。
安全检查清单
| 安全层级 | 检查项 | 状态 | 备注 |
|---|---|---|---|
| 基础加固 | 修改后台目录名 | ☐ | 使用复杂名称 |
| 修改管理员用户名和密码 | ☐ | 用户名非admin,密码强 | |
| 修改数据库前缀和密码 | ☐ | 使用随机前缀和强密码 | |
删除/保护 /install/ 目录 |
☐ | 安装后必须删除 | |
| 文件权限 | /data/ 目录权限设为755 |
☐ | |
.php 文件权限设为644 |
☐ | ||
| 核心目录权限设为755 | ☐ | ||
| 配置与代码 | 关闭不用的模块和插件 | ☐ | |
| 应用官方安全补丁 | ☐ | 定期检查 | |
| 代码层面防注入/XSS | ☐ | 修改 common.inc.php |
|
| 严格文件上传校验 | ☐ | 白名单、重命名、分离目录 | |
| 服务器与运维 | 安装并配置WAF | ☐ | 强烈推荐云WAF |
| 设置定期备份策略 | ☐ | 程序+数据库,异地存储 | |
| 定期检查更新 | ☐ | 关注官方动态 |
安全是一个持续的过程,而不是一次性的任务,养成良好的安全习惯,你的织梦网站才能更加坚不可摧。
