DedeCMS 5.7 是一个非常经典和流行的版本,但由于其发布时间较早,存在一些已知的安全漏洞,本手册将从服务器环境配置、程序文件加固、数据库安全、日常运维等多个维度,为您提供一套完整的安全加固方案。

(图片来源网络,侵删)
重要声明:
- 备份!备份!备份! 在进行任何修改之前,请务必备份您的网站程序文件和数据库,这是最重要的一步。
- 版本问题 本手册主要针对 DedeCMS 5.7 SP2(最常用的5.7版本),如果您使用的是更早或更晚的版本,部分操作可能需要调整。
- 安全是持续的过程 没有一劳永逸的安全方案,安全加固是一个持续的过程,需要您时刻关注最新的安全动态和补丁。
第一部分:服务器环境安全配置(最高优先级)
服务器环境是网站安全的第一道防线,也是最重要的一道防线,如果服务器不安全,程序做得再好也无济于事。
选择安全可靠的虚拟主机/服务器
- 禁用危险函数:联系您的空间商,确保在
php.ini中禁用或重命名以下危险函数:disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
- 安全模式:确保
safe_mode = Off(旧版本PHP建议开启,但PHP 5.4+已废弃,推荐关闭并配合disable_functions使用)。 - 开启错误日志:确保
display_errors = Off,错误信息不应直接显示在页面上,而应写入日志文件error_log。
目录和文件权限设置
这是 DedeCMS 安全的核心!请严格按照以下权限设置:
- 网站根目录:
755或750 - 程序目录():
755 - 数据目录(
/data/):707或755(这是关键!data目录需要写入权限,但707风险较高,755是更安全的折中方案,请确保运行网站的用户有写入权限) - 缓存目录(
/templets/cache/,/html/等):755 - 所有
.php文件:644(不可执行) - 所有
.html文件:644 - 所有
.inc.php文件:644(这些是包含文件,必须不可直接访问) - 所有配置文件(
/data/common.inc.php):644(但需确保其可被 PHP 脚本读取)
如何设置权限?
- Linux 服务器 (SSH):使用
chmod命令,chmod 644 dede/*.php。- 虚拟主机控制面板:通常有“文件权限”或“属性”设置功能。
- FTP 客户端:右键文件/文件夹 -> 属性 -> 勾选相应的读写执行权限。
伪静态规则 (防注入)
在 .htaccess 文件中(如果不存在则创建一个,放在网站根目录),添加以下规则,可以有效防止一些常见的 SQL 注入和跨站脚本攻击。

(图片来源网络,侵删)
# 防止 SQL 注入
RewriteCond %{QUERY_STRING} (\.\.\/|\.\/|\.\.\\\|\.\\\|/etc/passwd|/etc/shadow|/etc/group|/etc/gshadow|/usr/(s|b)in|/bin|/sbin|var/(log|www|spool)|/proc/self|/dev/(null|urandom)|/proc/(meminfo|version|stat|cpuinfo|devices|filesystems|cmdline|environ|maps|modules|partitions|status|uptime|swaps|zoneinfo|cgroups))
RewriteRule .* - [F]
# 防止跨站脚本攻击
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} (javascript:|vbscript:|expression:) [NC,OR]
RewriteCond %{QUERY_STRING} (alert|cmd|prompt|confirm|onmouseover|onload|onerror) [NC,OR]
RewriteCond %{QUERY_STRING} (document\.|cookie|window\.|\.parent) [NC]
RewriteRule .* - [F]
# 防止盗链
RewriteCond %{HTTP_REFERER} !^http://([a-z0-9-]+\.)*yourdomain\.com [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .*\.(jpg|jpeg|png|gif|bmp|swf|rar|zip|css|js)$ - [F]
# 将 yourdomain.com 替换为您的域名
第二部分:DedeCMS 程序自身加固
安装最新补丁
DedeCMS 官方会不定期发布安全补丁,请务必访问 DedeCMS 官网,下载与您 5.7 版本对应的最新安全补丁进行覆盖更新。
- 关注官方:持续关注 DedeCMS 官方论坛或安全公告。
- 常见漏洞:5.7 的常见漏洞包括
plus/carbuyaction.php、plus/posttocar.php、member/mtypes.php等文件中的 SQL 注入漏洞,官方补丁会修复这些问题。
修改默认管理目录和入口
- 修改管理目录名:将
/dede/目录重命名为一个复杂的、不易猜测的名字,如myadmin_v2x8s。 - 修改管理入口文件:将
/dede/login.php重命名为其他名字,如login_new.php,然后修改/dede/config.php文件中的$cfg_cmspath和$cfg_adminpath变量,使其指向新的入口文件名。// 在 /dede/config.php 中 $cfg_cmspath = '/'; // 保持网站根目录 $cfg_adminpath = '/myadmin_v2x8s'; // 你的新管理目录名 // 还需要找到并修改登录跳转的URL
修改默认数据库表前缀
安装时如果使用了默认的 dede_,强烈建议修改,如果已经安装,可以手动修改:
- 备份数据库!
- 使用 phpMyAdmin 等工具,重命名所有以
dede_开头的表为新的前缀(如mycms_)。 - 修改
/data/common.inc.php文件中的$cfg_dbprefix变量。// 在 /data/common.inc.php 中 $cfg_dbprefix = 'mycms_'; // 修改为你的新前缀
删除或锁定不必要的目录和文件
- 删除示例数据:安装后,登录后台,在“系统” -> “数据库备份/恢复”中,删除默认的示例文章和栏目。
- 删除危险文件:删除
/plus/diy.php(如果未使用自定义表单功能)或对其进行严格加固。 - 锁定或重命名:
/install/:安装目录,安装完成后务必删除。/special/:专题目录,如果未使用,可以删除或设置403权限。/member/:会员目录,如果不需要会员功能,可以删除或重命名。/headimg.php:头像上传文件,如果未使用,建议删除。
后台安全设置
- 修改管理员密码:使用强密码(包含大小写字母、数字、特殊符号,长度至少12位)。
- 修改超级管理员用户名:不要使用
admin,修改为一个独特的名称。 - 关闭后台入口验证码:在“系统” -> “系统基本参数” -> “安全设置”中,不要关闭验证码,这是防止暴力破解的关键。
- 关闭会员目录的注册:如果不需要会员功能,在“系统” -> “系统基本参数” -> “会员设置”中,关闭“允许会员注册”。
- 开启SQL语句监控:在“系统” -> “系统基本参数” -> “其他选项”中,开启“开启SQL语句监控功能”,这有助于发现异常的数据库操作。
第三部分:数据库安全
- 设置数据库密码:为数据库设置一个强密码,不要使用简单的密码。
- 数据库用户权限:为 DedeCMS 的数据库用户分配最小权限,通常只需要
SELECT,INSERT,UPDATE,DELETE,CREATE,ALTER,DROP(谨慎授予) 等权限,不要给予FILE,GRANT等危险权限。 - 定期备份数据库:设置定时任务(Cron Job),每周或每天自动备份数据库,并将备份文件下载到本地或保存到云存储。
第四部分:日常运维与监控
定期更新
- 关注官方:持续关注 DedeCMS 官方动态,一旦有新版本或安全补丁,立即更新。
- 更新流程:更新前务必备份,然后按官方说明进行覆盖更新,最后检查网站是否正常。
定期扫描
- 使用漏洞扫描工具(如“漏洞盒子”、“补天”或一些在线扫描服务)定期扫描您的网站,发现潜在风险。
- 使用 DedeCMS 自带的“系统” -> “系统维护” -> “数据库备份/恢复”和“文件校验”功能进行检查。
关注网站日志
- 定期查看服务器的访问日志(
access_log)和错误日志(error_log),留意是否有异常的 IP 频繁访问特定文件(如plus/search.php?id=...),这可能是在进行扫描或攻击。
防止被“挂马”
- 文件监控:定期检查网站根目录下是否有非你上传的文件,特别是
.php、.jsp等可执行文件,以及被修改的.html文件。 - 使用安全软件:在服务器上安装安全软件(如
Linux下的LMD (Linux Malware Detect)),可以定期扫描网站文件是否被感染。
DedeCMS 5.7 安全清单
| 类别 | 项目 | 状态 | 备注 |
|---|---|---|---|
| 服务器 | 禁用危险函数 | 必须 |
exec, shell_exec, system 等 |
| 目录权限设置 | 必须 |
data 目录 707 或 755,.php 文件 644 |
|
| 伪静态规则 | 必须 |
在 .htaccess 中配置,防注入和XSS |
|
| 程序 | 安装最新补丁 | 必须 |
官方是唯一可信来源 |
| 修改管理目录/入口 | 必须 |
/dede/ -> 复杂名称 |
|
| 修改数据库前缀 | 强烈建议 |
安装时或安装后手动修改 | |
| 删除无用文件 | 必须 |
/install/, /plus/diy.php 等 |
|
| 管理员账户安全 | 必须 |
强密码,非 admin 用户名 |
|
| 数据库 | 设置强密码 | 必须 |
|
| 定期备份 | 必须 |
||
| 运维 | 定期更新和扫描 | 必须 |
安全是持续过程 |
| 关注日志 | 建议 |
发现异常行为 |
遵循以上手册,您的 DedeCMS 5.7 网站的安全性将得到极大的提升,安全是一个系统性的工程,需要从环境、程序、运维等多个层面进行加固。
