【角色生成:老王,37岁,一家省级门户站点的运维主管,平时戴黑框眼镜,说话慢条斯理,习惯用“咱们站长”开头,喜欢把安全技术讲得跟修水管一样接地气,他经历过织梦CMS从5.5到现在的所有版本,被黑过三次,每次都有惊无险。】
咱们站长都知道,织梦CMS(DedeCMS)是国内建站的老朋友了,但就像家里水管用久了容易生锈,这些安全坎儿不迈过去,指不定哪天就给你来个水漫金山,我就把这些年摸爬滚打总结的经验,掰碎了讲给你听。
织梦CMS常见安全漏洞,你中了几个?
先别慌,咱们把最常见的几个“雷”排一排。
SQL注入漏洞
这是织梦的“老毛病”,早期版本里,通过某些变量(比如id=1’)就能直接往数据库里插坏东西,虽然官方在6.x之后封堵了大部分,但如果你还在用“伪静态”或自定义模型,又没做过滤,那依然有被钻空子的风险。
典型表现:网站突然多出一些奇怪的广告、文章内容被篡改、后台登录卡顿。
织梦CMS站长安全必修课,从漏洞堵上,到被黑后重建的完整指南
文件包含漏洞
说白了就是:攻击者能把一个坏文件“藏”进你的正常文件里,通过include/$typeid.php这种路径,伪造一个恶意文件让服务器执行。
典型表现:网站无端跳转到赌博或色情站、服务器CPU飙升、FTP里出现陌生.php文件。
后台弱密码与暴力破解
这个最扎心——很多站长后台账号密码还是admin/123456,或者干脆没改dedecms默认账户,现在黑客都用自动化脚本扫,一分钟能试几百个组合。
典型表现:后台登录记录里出现大量陌生IP(在系统日志->登录记录里能查到)。
文件上传漏洞
织梦默认允许上传图片、zip包,但有些版本对上传文件类型检测不严,比如在图片后缀后加个.php空格外挂,服务器照样能解析成脚本。
典型表现:上传目录(/uploads)里出现.php文件、网站被挂马。
后台安全设置,四步锁死门锁
别嫌麻烦,每次更新织梦后,先做这几步:
第一步:修改默认账户和密码
登录后台,找到“系统”->“系统基本参数”->“管理员选项”,把admin这个用户名改成你记不住但能写在本子上的名字(比如webmaster_zhiyin),密码强度至少大小写字母+数字+符号共12位以上。
重要:千万别用“织梦cms后台密码”这种关键词组合。
第二步:关闭不用的功能
在“系统”->“系统基本参数”->“网站功能设置”里,把“是否允许会员注册”选“否”,“是否启用WAP访问”选“否”,“是否启用RSS输出”也选“否”,这些功能用不上就是攻击面。
额外:在“系统”->“数据库备份/恢复”里,把自动备份间隔设成“0”,别让数据库文件长期留在/data/backupdata/里。
第三步:限制后台登录IP
修改织梦根目录下的include/config.php文件,找到$cfg_adminlimitips = '';,在里面填上你常用登录的IP(可用逗号分隔多个),如果不是固定IP,至少填上你内网IP段,或者直接设成'127.0.0.1',然后通过SSH隧道登录。
注意:改了之后,如果家里换了外网IP,你得用FTP改回来,所以别改太死,建议用一个“自己+公司”的双IP方案。
第四步:强制HTTPS+更新密钥
在后台“系统”->“系统基本参数”->“网站配置管理”里,把“网站网址”的http://改成https://,然后在“验证码安全设置”里,更新一下“安全密钥”。
操作:去网上找“在线密钥生成器”,随便生成一串32位随机字符,粘贴进去,这个密钥是加密后台Cookies的,换了之后旧登录态全失效,攻击者偷不了你的登录信息。
文件权限与目录加固,给网站穿上“防弹衣”
这一关很多站长要么不管,要么改得太死让网站崩了,咱们分情况说:
核心目录权限(千万守住):
/include/(核心类库):建议设成“755”(文件属主可写,其他人只能读执行),不要给“777”权限,命令:chmod -R 755 ./include/data/(缓存、配置、SQLite):同样755,千万别开写权限给系统所有者以外的用户。/templets/(模板目录):设成“755”,但模板文件(.htm)可以设“644”(只读)。/uploads/(上传目录):这是最容易中招的,建议设成“755”,同时禁止执行PHP文件。
操作:在服务器Nginx/Apache配置里加规则,比如Nginx加:location ~* /uploads/.*\.php$ { deny all; }如果服务器是虚拟主机,就在根目录放一个
.user.ini文件(但大部分虚拟主机屏蔽此功能,最好问客服)。
敏感文件单独锁死:
install.php:安装完后立刻删除或改名(比如改成install_19700101.php,绝对不写日期)。robots.txt:确认里面没暴露后台路径(很多模板会写Disallow: /admin,得删掉)。admin/目录下的文件:统一设成“644”,只有属主可写。
隐藏目录与文件:
- 把
/data/backupdata/目录的权限设成“705”(属主读写+执行,其他人只能执行,不能列表),这样攻击者通过URL访问会显示“禁止”。 - 在根目录的
.gitignore(如果有)或.htaccess里加一句:deny from all屏蔽/data/tplcache/、/data/rss/等目录。
被黑了?别慌,试试这套“三步复原法”
假设你已经发现网站首页被篡改、或多了奇怪的广告,按顺序做,每一步都别跳。
第一步:立刻断网+备份
先用FTP或服务器面板把网站文件全部下载到本地,再导出当前数据库(用phpMyAdmin或mysqldump -u root -p 数据库名 > 危险备份.sql)。别在线上做修改,否则证据没了。
第二步:排查“常驻病毒”
-
查临时文件:打开
/data/tplcache/或/templets/default/,看看有没有.php或.js文件。 -
查核心文件:用
diff命令比较你的干净备份和当前文件的差异。diff -r 干净备份 /include /data
如果看到陌生代码片段(比如eval、base64_decode、str_replace),基本是中招了。
-
查数据库:在sql中搜索
<script>或iframe,99%会出现在#__archives(文章表)或#__member(用户表)中,用SQL替换掉:UPDATE #__archives SET body = REPLACE(body, '<script>坏代码</script>', '');
-
清理后门:在后门比较隐蔽的地方,比如
/include/common.inc.php末尾、/include/functions.php的函数里,用小工具webshell-scan.php(网上有开源版)跑一遍。
第三步:修复+变更
- 用干净备份覆盖全部网站文件(包括
/include/、/data/等)。 - 重置所有管理员密码(在后台“系统”->“管理员管理”里修改)。
- 检查.htaccess或nginx配置文件,确认没有重写规则指向恶意地址。
- 恢复数据库后,立刻在后台“系统”->“数据库备份/恢复”里重新备份一次,并设定自动备份间隔为1天(持续一周)。
- 把所有第三方插件或模板全部卸载(在后台“模块”->“插件管理”里删除非官方模块)。
日常维护检查清单(每周五下午做一次)
别再偷懒了,复制下面清单贴在电脑旁:
- 登录日志检查:后台“系统”->“系统日志管理”->“登录日志”,看有没有凌晨3点多的外地IP。
- 文件完整性扫描:用工具对比根目录下
.md5文件(早期织梦有这个功能,没的可以下载DedeCMS官方完整性包扫描)。 - 数据库无痕修改检查:搜索
<script>、iframe、base64_decode、eval关键词。 - 权限修正:对
/uploads/、/data/、/include/目录做一次chmod -R 755(敏感文件644)。 - 插件更新:登录织梦官方社区,看看有没有安全补丁发布,如果不是为兼容性,坚决不装第三方插件。
- 远程文件检测:用
curl -I 你的域名,看返回头里有没有X-Powered-By: PHP/5.2.17这类暴露版本信息(可在php.ini里关闭“expose_php=Off”)。 - 密码重置:至少每3个月改一次后台密码。
咱们站长记住一句话:安全不是银弹,而是习惯,你把上面流程跑两遍,再遇到漏洞心里就有底了,真要是哪天登录不上、全站飘红,别慌,备份在手,天下我有。



发表评论