欢迎访问艾立兹站 Aliz- 专注建站教程与技术分享
您当前的位置:首页 > 建站教程 > 织梦CMS教程

dedeCMS建站后必做的安全加固与性能优化全攻略

时间:2026-08-19 09:42:37  来源:aliz.cn  作者:SKY  阅读:

用 dedeCMS(织梦CMS)建站的人不少,但真正把安全和性能做到位的不多。很多站长装完模板、填完内容就直接上线,后台地址不改、默认管理员不删、install 目录不删,结果没过多久网站被挂马、被跳转赌博站,数据库还被拖了。

这篇文章不讲虚的,把我这几年维护 dedeCMS 站点踩过的坑和验证过有效的方案整理出来,从安全加固性能优化常见问题排查三个部分说清楚,每一步都带代码和配置,照着做就行。

一、安全加固:先把门锁好

1. 删除或重命名 install 目录

dedeCMS 安装完成后,/install 目录默认还在,这是最大的安全隐患之一。攻击者可以通过重新安装覆盖你的配置文件,直接拿到数据库权限。

处理方式很简单,要么直接删,要么改名:

# 直接删除(推荐)
rm -rf /www/wwwroot/你的站点/install

# 或者改名,需要升级时再改回来
mv /www/wwwroot/你的站点/install /www/wwwroot/你的站点/install_bak

宝塔面板用户在文件管理器里操作也行,效果一样。

2. 修改后台目录名称

dedeCMS 默认后台地址是 /dede,这等于告诉所有人你的后台入口在哪。暴力破解、SQL 注入都从这里入手。

修改方法:

  1. 把 /dede 目录重命名为你自己的名字,比如 /admin_aliz88
  2. 打开 /data/common.inc.php,找到 $cfg_dede_dir = 'dede';,改成新目录名
  3. 清空 /data/cache 下的缓存文件

注意:目录名不要用 adminmanage 这种常见词,加一串随机字符更安全。

3. 目录权限设置

很多图省事直接把整个站点设为 777,这是大忌。正确的权限分配应该是:

# 站点根目录和大部分目录设为 755
find /www/wwwroot/你的站点 -type d -exec chmod 755 {} \;

# 所有 PHP 文件设为 644
find /www/wwwroot/你的站点 -name "*.php" -exec chmod 644 {} \;

# 以下目录需要写入权限,设为 755 即可(PHP以www用户运行时)
# /a (HTML生成目录)
# /data (缓存和配置)
# /uploads (上传目录)
# /templets (模板目录,如果需要在线编辑)

# uploads 目录禁止执行 PHP
# 在 /uploads/.htaccess 中添加(Apache)
<FilesMatch "\.php$">
    Order Allow,Deny
    Deny from all
</FilesMatch>

Nginx 用户在站点配置里加:

location ~* ^/uploads/.*\.(php|php5)$ {
    deny all;
}

这一条非常关键,大部分 dedeCMS 被挂马都是通过上传漏洞传了一句话木马到 uploads 目录,然后直接访问执行。禁掉 uploads 的 PHP 执行,即使被传了马也跑不起来。

4. 修补已知漏洞

dedeCMS 官方已经停止更新很久了(最后一个大版本是 V5.7 SP2),但社区一直在出补丁。几个必须补的高危漏洞:

(1)/plus/recommend.php SQL 注入

打开 /plus/recommend.php,找到 $aid = $_GET['aid'];,改成:

$aid = preg_replace("#[^0-9]#", '', $_GET['aid']);

(2)/plus/download.php 任意文件下载

打开 /plus/download.php,在 $open = $_GET['open']; 后面加过滤:

$open = preg_replace("#[^a-z0-9_]#i", '', $open);
if(strpos($open, '..') !== false) exit('Request Error!');

(3)/member/ 会员中心

如果你的站点不需要会员功能,直接把 /member 目录改名或删除,会员模块是 dedeCMS 漏洞重灾区。

5. 后台访问限制

如果你的服务器是固定 IP,或者用了 CDN,可以限制只有特定 IP 能访问后台。Nginx 配置:

location ~* ^/你的后台目录/ {
    allow 你的IP;
    deny all;
    # 配合 PHP 解析
    location ~ \.php$ {
        fastcgi_pass unix:/tmp/php-cgi.sock;
        fastcgi_index index.php;
        include fastcgi.conf;
    }
}

没有固定 IP 也没关系,至少给后台加一层 Basic Auth 密码,宝塔面板的"目录访问"功能一键就能设。

二、性能优化:让网站飞起来

1. 开启伪静态,减少动态请求

dedeCMS 默认生成静态 HTML,这本身是好事,但列表页、搜索页、会员页还是动态的。把列表页也做成静态或伪静态,能大幅减轻 PHP 和 MySQL 的压力。

Nginx 伪静态规则:

location / {
    if (!-e $request_filename) {
        rewrite "^/list-([0-9]+)-([0-9]+)\.html$" /plus/list.php?tid=$1&PageNo=$2 last;
        rewrite "^/view-([0-9]+)-([0-9]+)\.html$" /plus/view.php?arcID=$1&pageno=$2 last;
        rewrite "^/search-([0-9]+)-([0-9]+)\.html$" /plus/search.php?keyword=$1&PageNo=$2 last;
    }
}

后台 → 系统 → 系统基本参数 → 核心设置,把"是否使用伪静态"设为"是",然后更新系统缓存。

2. 配置页面缓存

dedeCMS 自带的缓存机制比较弱,建议用 Redis 或 Memcached 做一层缓存。如果用宝塔,直接装 Redis 扩展,然后在 /data/config.cache.inc.php 里配置:

$cfg_memcache_enabled = 'Y';
$cfg_memcache_host = '127.0.0.1';
$cfg_memcache_port = '11211';
$cfg_memcache_prefix = 'dede_';
$cfg_cache_time = '3600';

没有 Redis 的话,至少开启 dedeCMS 的文件缓存:后台 → 系统 → 性能选项,把"缓存方式"设为"文件缓存",缓存时间设为 3600 秒。

3. MySQL 优化

dedeCMS 的文章表 dede_archives 和附加表 dede_addonarticle 是查询最频繁的,确保关键字段有索引:

-- 检查索引
SHOW INDEX FROM dede_archives;
SHOW INDEX FROM dede_addonarticle;

-- 常用查询字段加索引
ALTER TABLE dede_archives ADD INDEX idx_typeid_senddate (typeid, senddate);
ALTER TABLE dede_archives ADD INDEX idx_arcrank (arcrank);
ALTER TABLE dede_addonarticle ADD INDEX idx_aid (aid);

MySQL 配置文件 my.cnf 里几个关键参数:

[mysqld]
# 缓冲池大小,设为物理内存的 50%-70%
innodb_buffer_pool_size = 1G
# 查询缓存(MySQL 8.0已移除,5.7可用)
query_cache_type = 1
query_cache_size = 64M
# 连接数
max_connections = 200
# 临时表大小
tmp_table_size = 64M
max_heap_table_size = 64M
# 慢查询日志,排查慢SQL
slow_query_log = 1
slow_query_log_file = /www/server/mysql/slow.log
long_query_time = 2

开启慢查询日志后,跑一周用 mysqldumpslow 分析,把最慢的几条 SQL 找出来优化。dedeCMS 的搜索功能 SQL 写得比较烂,数据量大了一定要单独优化。

4. PHP 优化

PHP 版本建议用 7.4 或 8.0,dedeCMS V5.7 SP2 对 PHP 7.x 兼容没问题,PHP 8 可能需要改几个地方,但性能提升明显。

php.ini 关键配置:

; 内存限制,根据站点情况调整
memory_limit = 256M
; 上传大小
upload_max_filesize = 32M
post_max_size = 32M
; 执行时间
max_execution_time = 60
; OPcache 开启(必开,性能提升30%以上)
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.revalidate_freq=60
opcache.fast_shutdown=1

OPcache 是 PHP 性能优化里投入产出比最高的一项,一定要开。宝塔面板在 PHP 设置 → 安装扩展里一键安装。

5. 图片和静态资源优化

dedeCMS 站点通常图片很多,文章缩略图、图集、附件,不加优化页面加载会很慢。

几个实操建议:

  • 上传图片时用后台的"缩略图"功能自动生成合适尺寸,不要把原图直接丢到文章里
  • 开启 Nginx 的 gzip 压缩,压缩 CSS、JS、HTML
  • 静态资源加过期头,减少重复请求

Nginx 配置:

# gzip 压缩
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_comp_level 6;
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/json;
gzip_vary on;

# 静态资源缓存
location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff|woff2|ttf|eot)$ {
    expires 30d;
    add_header Cache-Control "public, immutable";
}

有条件的话接个 CDN(七牛、又拍、阿里云OSS都行),把图片和静态资源全丢 CDN,源站压力能降一大半。

三、常见问题排查

1. 后台空白或 500 错误

最常见的原因是 PHP 版本不兼容或文件权限不对。排查步骤:

  1. 看 PHP 错误日志:/www/server/php/版本/var/log/php-fpm.log
  2. 临时在 /data/common.inc.php 顶部加 error_reporting(E_ALL); ini_set('display_errors', 1);,刷新看具体报错
  3. 检查 /data/a 目录是否有写入权限
  4. PHP 7.x 下 /include/helpers/util.helper.php 里的 each() 函数已废弃,需要替换为 foreach

2. 生成 HTML 时报错 "DedeTag Engine Create File False"

这个错误 90% 是目录权限问题,/a 目录或对应的栏目目录没有写入权限。解决:

chown -R www:www /www/wwwroot/你的站点/a
chmod -R 755 /www/wwwroot/你的站点/a

如果用的是宝塔,所有者改成 www,不要用 root

3. 栏目页 404

伪静态规则没生效,或者后台的"栏目命名规则"和 Nginx/Apache 规则不匹配。检查:

  1. 后台 → 核心 → 栏目管理 → 高级选项,看"文件命名规则"
  2. 确认 Nginx 的 rewrite 规则和命名规则一致
  3. 重启 Nginx 后测试

4. 网站被挂马后的处理

如果发现网站被跳转、页面被篡改,按这个顺序处理:

  1. 立刻关闭网站(Nginx 下 nginx -s stop,或宝塔一键停止)
  2. 备份当前所有文件和数据库(保留证据)
  3. 用 find /www/wwwroot/你的站点 -name "*.php" -mtime -7 找最近 7 天修改过的 PHP 文件
  4. 搜索一句话木马特征:grep -r "eval(\$_" /www/wwwroot/你的站点 --include="*.php"
  5. 对比官方原版文件,替换被篡改的文件
  6. 修改数据库密码、后台密码、FTP 密码
  7. 按本文第一部分重新做安全加固
  8. 检查 dede_admin 表,删除陌生管理员账号
-- 检查管理员
SELECT id,userid,uname,logintime,loginip FROM dede_admin;

-- 删除可疑账号
DELETE FROM dede_admin WHERE id = 可疑ID;

四、写在最后

dedeCMS 虽然官方不更新了,但作为一个成熟的内容管理系统,用来做资讯站、企业站、素材站依然够用。关键是建站后把安全和性能这两件事做到位,不然就是给攻击者留后门。

上面这些操作我在多个站点上验证过,照着做一遍,安全性和访问速度都能上一个台阶。如果你的站点已经运行了一段时间,建议趁这次机会全面排查一次,特别是 /plus 目录下的文件,很多漏洞都藏在那里。

有问题欢迎在评论区交流,我会尽量回复。

本文配套模板、静态源码可前往艾立兹素材库alisucai.com下载

发表评论 共有0条评论
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
公众号二维码

扫码关注公众号
获取全套技术教程