折腾织梦CMS这么多年,后台那个管理员日志表,我闭着眼睛都能背出字段名,你以为它就是记录谁登录了、谁改了文章的闲杂簿?错!它就是个定时炸弹——没处理好,分分钟让网站慢到怀疑人生,甚至直接被拖库,今天我把这几年的血泪史倒出来,顺便把填坑的方子全贴出来,看完能帮你省下至少几千块的运维冤枉钱。
第一个大坑:日志表无限膨胀,后台卡成幻灯片
刚接手一个老站时,我发现后台点个“系统设置”要等半分钟,打开数据库一看,dede_admin_log 表里躺着80多万条记录,最早的日志能追溯到5年前,每次插入新日志都要先查一遍索引,更新操作直接堵死,更恶心的是,织梦后台默认没有自动清理机制,日志只增不减,时间一长连MySQL查询缓存都得被撑爆。
解决方案: 别用手工删,太累,直接在服务器上扔个定时任务(cron),每周跑一次清理脚本,我用的SQL长这样:

织梦CMS管理员日志,那些年我踩过的坑,以及怎么填平它
DELETE FROM dede_admin_log WHERE logtime < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY));
想更省事?再追加一条自动优化表:
OPTIMIZE TABLE dede_admin_log;
推荐配置: 织梦后台“系统→基本参数→性能选项”里有个“保留管理员日志天数”,默认是0(永久保留),赶紧改成30,它能帮你自动清理一部分,但别指望它百分百靠谱——有些版本这个字段根本没绑到清理逻辑上,所以我直接写死cron,一个月跑一次,稳如老狗。
第二个坑:后台密码被暴力破解,头像变成“黑客感谢你”
有个客户半夜打电话,说网站首页被插了博彩广告,查管理员日志,发现有人用字典连续尝试登录了3个小时,最后撞库成功,织梦默认的后台路径是 /dede,登录页面都不带验证码,等于把大门敞开了让黑客搞。
解决方案: 三步走,缺一不可。
- 改后台目录:把
/dede改成随机字符串,/myadmin123,注意要同步修改data/admin/config.php里的$cfg_admin路径,否则后台打不开。 - 开启验证码:在“系统→基本参数→安全选项”里,把“验证码开关”打开,至少每次登录都要输验证码,更狠的可以安装“Dede安全狗”插件,它支持连续失败5次封IP 24小时。
- 限制登录IP:如果你有固定IP或公司专线,直接在
include/common.inc.php最前面加IP白名单,代码片段:
$allowed_ips = array('你的IP1','你的IP2');
if(!in_array($_SERVER['REMOTE_ADDR'], $allowed_ips)){
die('越狱有风险,登录需谨慎');
}
避坑提醒: 别只改后台目录不改配置文件,我见过有人改完目录后忘了同步,结果自己都进不了后台,只能去FTP改回来,尴尬到抠脚。
第三个坑:日志文件暴露全站数据库账号密码
有次我帮朋友检查一个织梦站,发现 data/admin/ 目录下有个 common.inc.php 备份文件,后缀名是 .bak,直接打开一看,数据库用户名密码、数据库名全明文躺着,更离谱的是,这个备份文件是织梦日志插件生成的,默认放到了网站根目录,而且没有做任何访问限制。
解决方案:
- 立即删除这些备份文件,别只删内容,文件本身也要删,如果怕误操作,先在
data/下面建个.htaccess禁止访问所有后缀文件:
<FilesMatch "\.(bak|sql|log|txt)$">
Order allow,deny
Deny from all
</FilesMatch>
- 推荐插件:我一直在用“DedeCMS 安全加固包”,它能自动检测并删除危险备份文件,还能给后台登录页加上二次验证(短信或邮箱验证码),虽然要花点小钱,但比出事后花大钱洗白网站强。
第四个坑:伪静态规则导致管理员日志变成404
织梦的伪静态规则一不注意就会跟后台日志路径冲突,比如你启用了 rewrite 后,访问 /plus/admin_log.php?id=1 这样的地址,如果规则没有排除后台目录,直接给你转成404,那时你连日志都查不了,想排查问题都没门。
解决方案: 在伪静态规则里加一行排除目录,以Apache的.htaccess为例:
RewriteEngine On
# 排除后台目录
RewriteCond %{REQUEST_URI} !^/dede
RewriteCond %{REQUEST_URI} !^/plus
# 其他规则...
Nginx的话对应加:
location /dede {
try_files $uri $uri/ /index.php?$args;
}
长期维护建议: 每次修改伪静态规则后,第一时间访问后台的“系统→管理员日志”页面,确认能正常分页、查看详情,如果出现空白页,八成是规则把参数吞了。
第五个坑:管理员日志里爬出无数蜘蛛机器人
织梦后台日志记录的是“管理员操作”,但有些垃圾蜘蛛会模拟Cookie或者直接访问后台地址,导致日志表里塞满了“IP: 111.222.333.444 访问了系统设置页”这种无效记录,看着烦,还占数据库空间。
解决方案:
- 在
include/common.inc.php里加一段代码,判断访问来源是不是真实的管理员会话,如果用户代理包含“Bot”或者IP来自爬虫池,直接跳过日志插入:
if(preg_match('/bot|crawl|spider|slurp|archive/i', $_SERVER['HTTP_USER_AGENT'])){
// 不记录
return;
}
- 推荐插件:装个“织梦IP黑名单”插件,把常见的垃圾爬虫IP段加到禁止列表,网上有现成的列表,每月更新一次。
长期维护:让管理员日志真正为你所用,而不是拖后腿
- 定期分析日志:每周花5分钟扫一眼日志,重点关注凌晨2-5点的异常登录尝试、以及“修改核心文件”这类高危操作,一旦发现不明IP,立马拉黑。
- 备份与清理结合:日志清理前先导出一份CSV存本地,万一要审计历史操作还能查,用
mysqldump --where="logtime > 1234567890" dedecms dede_admin_log > backup_log.sql按时间戳备份。 - 日志文件权限:把
data/admin_log.txt(如果有)权限设成644,别用777,否则谁都能读。 - 版本保持最新:织梦官方虽然更新慢,但安全补丁必须打,每次升级后,确认新的日志模块有没有坑,比如某些版本把日志改成了写入数据库后不再清空,得手动改配置。
最后说句掏心窝的话:管理员日志这东西,平时看着不起眼,出问题它就是救命稻草,但如果你不主动维护,它就会变成“索命绳”,别像我一样等到数据库报错再动手,趁现在赶紧去后台看一眼,改改配置,跑个SQL,省下的时间够你多睡好几个安稳觉了。
发表评论